Linux下C语言多线程编程学习一
简单实现多线程需要用到 pthread_create函数和pthread_create函数。先上例子再做解释。
#include <stdio.h>
#include <pthread.h>
#include <stddef.h>
void thread(void){
int i;
for(i=0;i<60 ; i++){
printf("这是子线程!\n");
sleep(1);
}
}
int main(void){
pthread_t id;
int i,ret;
ret = pthread_create(&id,NULL,(void *)thread,NULL);
if(ret!=0){
printf("创建新显存错误!\n");
exit(1);
}
for(i=0;i<50;i++){
printf("这是主线程.\n");
sleep(1);
}
pthread_join(id,NULL);
printf("两个线程都已经运行结束.\n");
return 0;
}
Linux下多线程需要用到pthread.h头文件,所以在代码的开始处引入了头文件。在例子中使用到了NULL,所以我们也引入了stddef.h头文件。接下来我们从main函数开始分析代码。
pthread_t是一个多线程标识符,在pthreadtypes.h中申明,
typedef unsigned long int pthread_t;用来记录线程ID的。
pthread_create函数在pthread.h中声明,如果创建线程成功则返回0,如果返回线程失败则返回非零。
pthread_create函数有四个参数,第一个参数为指向线程标识符的指针,就是我们前边申明的pthread_t id。第二个参数用来设置线程属性,线程属性在下一篇文章中介绍。第三个参数是线程运行函数的起始地址,例子中的多线程函数为thread函数,所以在这里就传入thread函数的地址。最后一个参数是运行函数的参数,例子中thread无参数,所以此处传入NULL。
pthread_join函数同样在pthread.h中声明,是用来等待一个线程的结束,一般情况线程结束之后需要统一回收资源。pthread_join的第一个参数是需要等待结束的现场ID,其类型为pthread_t,第二个参数是用来存储线程结束后的返回值。
连接时需要使用库libpthread.a,所以在编译必须在选项中加入 -lpthread 选项,例如
gcc main.c -lpthread -o main.o.
本文介绍在Linux环境下利用C语言进行多线程编程的方法。通过实例详细讲解了pthread_create和pthread_join函数的用法,并提供了完整的代码示例。
1905

被折叠的 条评论
为什么被折叠?



