多线程编程
linux下GCC编译环境
可以直接使用vi 编写代码 也可以使用vscode编写完后在终端使用gcc编译
我采用的是第二点
基本介绍
pthread_t
它用于声明线程ID,类似于int a这样的声明,我们要先声明一个线程ID。pthread_create()
该函数用来创建线程,他有四个形参,我们暂时只用第一个和第三个,其他两个填NULL就行。
pthread_create是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。
具体使用方法可以百度或者在终端输入 man pthread_create
获取提示。
如图
3.pthread_jion
这个代码是等待线程执行完 ,若是不等待,可能主函数已经执行完了,线程来不及结束,导致出错。
完整代码
#include <stdio.h>
#include<stdlib.h>
#include<pthread.h>
void* test(void *args);
void* test(void* args)
{
int i;
for(i=0;i<5000;i++)
{
printf("%-6d",i);
}
return NULL;
}
int main()
{
pthread_t th1;
pthread_t th2;
pthread_create(&th1,NULL,test,NULL);
pthread_create(&th2,NULL,test,NULL);
pthread_join(th1, NULL);//等待线程TH执行完
pthread_join(th2, NULL);//等待线程TH1执行完
return 0;
}
因为处理过快 为了体现出多线程执行的输出数据,所以把i设置为了5000.
从输出结果可以看出,两个线程是轮流执行的。