Linux多线程初体验

直接上代码

#include "pthread.h"    //线程库,线程不是通过内核实现的
#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"

void* thread_func(void *arg){
        int *val = (int*)arg;
        printf("Hi!I‘m a thread!\n");
        if(NULL != arg){
                printf("argument set:%d\n",*val);
        }
}

int main(){
        pthread_t tid;
        int t_arg = 100;

        if(pthread_create(&tid,NULL,thread_func,&t_arg)){       //创建线程,如果成功返回0
                printf("Fail to create thread!\n");
        }

        sleep(1);       //等待1s,否则进程先结束那么线程就无法运行了
        printf("Main thread!\n");
        return 0;
}

写好代码之后使用编译命令 gcc -o pthread pthread.c会出现如下错误:

/tmp/cccBslRQ.o:在函数‘main’中:
pthread.c:(.text+0x66):对‘pthread_create’未定义的引用
collect2: error: ld returned 1 exit status

这是由于pthread库不是Linux的标准库,需给编译器指定连接的库,使用gcc -o pthread pthread.c -lpthread命令,编译器会寻找libpthread.a静态库文件,并且连接到用户代码。

编译好之后运行的结果如下:

Hi!I‘m a thread!
argument set:100
Main thread!

原文地址:https://www.cnblogs.com/veaxen/p/9185345.html

时间: 2024-10-11 00:30:15

Linux多线程初体验的相关文章

第三次随笔--安装虚拟机及学习linux系统初体验

第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟机的安装,安装过程可谓一帆风顺,一马平川,并没有遇到什么问题. ·成功安装之后打开虚拟机 对就是这个样子,略微有一点激动,还好,在自己的电脑上运行并不会有太多的卡顿 ·参考老师的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节. 虚拟机安

NetCore1.1+Linux部署初体验

1.环境准备 Centaos7+Win10 虚拟机 Win10安装VS2017 https://www.asp.net/downloads注意勾选下.Net Core 3.Centaos安装netcore 1.1参见https://www.microsoft.com/net/core#linuxcentos sudo yum install libunwind libicu curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?l

java的多线程初体验

这里以车站售票作为模拟场景,多个票务人员同时出售某一列高铁(G250?)的车票,售票的基本保证有2点: 1.不能售出多于预定限额的车票. 2.不能售出具有相同座位的车票. 初学java,有不当的地方各位看官请指教~ 代码如下: package threadjava; public class ThreadTest4 { public static void main(String[] args) { // TODO 自动生成的方法存根 //限定总票数为100张 Seller seller = n

C++11多线程初体验

在C++11标准之前,使用C++编写多线程程序要么需要第三方的API如pthread,要么需要依赖运行平台提供的API,使用起来很不方便.而C++11提供了平台无关的语言级别的支持,这极大得方便了我们开发人员. C++11的多线程支持主要通过使用如下的头文件中的类或者函数:<atomic><thread><mutex><condition_variable><future>. 新建线程 通过std::thread类新建线程.一般有两种方式: 1)

暑假第一篇,linux学习初体验

在大二结束的小学期我学习了嵌入式编程andrino.智能小车和树莓派.树莓派用的就是类Unix语言,当时主要是学习了: ·简单的命令行命令和使用gcc编译c文件的各种带参数的方式. ·进程.线程.网络编程.FIFO管道的使用,并未深入了解原理. 学嵌入式主要是接线,加把c程序烧录到芯片中,通过逻辑来控制各口的电平,来显示操作的情况,或者是在PC端的串口中显示(有实验报告). 智能小车功能包括各种运动(前后左右停止),有温度.光照.距离的测试模块,有自动距离检测.如果小于一定数值会改变方向.还有红

linux初体验

第一次听到linux这个'词语'是在一次偶然的朋友聊天中朋友提到的,之前压根没听到过'这个东西',所以我可以说是个linux的新新手,菜鸟都不算. 截至到目前,我已经开始linux系统运维学习有差不多10天时间了.在没接触linux之前,我对它的认识仅仅是:它是个计算机系统.决定学习linux系统运维之前,自我以为运维应该是对系统的一些日常维护之类的,不会很难的东西,我更希望运维是个不难的东西,我个人很笨,对难的东西可能接受的很慢,所以我愿意认为运维是很简单的,这样我就可以轻轻松松的掌握运维相关

Linux初体验(一)

Linux初体验(一) Shell date echo alias screen 安装VMware Tools Shell 用途说明 人机交互接口 Shell是Linux系统的用户界面,是用户操作Linux系统的一个直接工具,亦即人机交互接口,其既为用户提供了一个命令界面,也为用户命令提供解释执行的能力,故而Shell也称为Linux的命令解释器(command interpreter). 在Shell中可执行的命令分为两类,内置命令与外部命令,所谓内置命令,即shell自带的命令,可通过命令启

Linux初体验(五)

Linux初体验(五) 文件通配符 绝对路径与相对路径 发邮件 file tree 文件通配符 用途说明 文件通配符是一种简洁高效的语句,主要用来精确搜索或模糊搜索文件.其用一个或多个特殊的字符来实现对真正字符的替换,从而完成相关的任务. 在Linux中,主要有以下文件通配符: *  匹配零个或多个字符 ?  匹配任意单个字符 ~  当前用户家目录 ~username  用户家目录  [0-9]  匹配一个数字范围 [a-z]  大写与小写字母 [A-Z]  大写字母 [ ]  匹配列表中的任意

1.菜鸟的linux学习之路------linux初体验

脚本编程语言通常是解释型的.这类程序的执行,是由解释器读入代码,并将其转换成内部的形式,在执行.请注意,解释器本身是一般的编译型程序. 常用的脚本编程语言有 :awk,Perl,Python,Ruby,Shell.这里的Ruby是日本人研发的. 注释: linux : 1.rm 删除指定的文件 例:rm /Users/apple/Desktop/QQDock.plist 2.假设你想知道现在的系统有多少人在登录,那么 who命令可以实现 3.|管道符号可以在两个程序之间建立管道:who的输出,成