pthread_create函数
函数简介
pthread_create是UNIX环境创建线程函数
头文件
#include<pthread.h>
函数声明
int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);
返回值
若成功则返回0,否则返回出错编号
参数
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的地址。
最后一个参数是运行函数的参数。
注意
在编译时注意加上-lpthread参数,以调用静态链接库。因为pthread并非Linux系统的默认库。
pthread_join函数
函数简介
函数pthread_join用来等待一个线程的结束。
函数原型为:
extern int pthread_join __P (pthread_t __th, void **__thread_return);
参数:
第一个参数为被等待的线程标识符
第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。
注意
这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。如果执行成功,将返回0,如果失败则返回一个错误号。
例子:
#include<stdio.h>#include<stdlib.h>#include<pthread.h>/* 声明结构体 */struct member{ int num; char *name;};/* 定义线程pthread */static void * pthread(void *arg){ struct member *temp; /* 线程pthread开始运行 */ printf('pthread start!n'); /* 令主线程继续执行 */ sleep(2); /* 打印传入参数 */ temp = (struct member *)arg; printf('member->num:%dn',temp->num); printf('member->name:%sn',temp->name); return NULL;}/* main函数 */int main(int agrc,char* argv[]){ pthread_t tidp; struct member *b; /* 为结构体变量b赋值 */ b = (struct member *)malloc(sizeof(struct member)); b->num=1; b->name='mlq'; /* 创建线程pthread */ if ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1) { printf('create error!n'); return 1; } /* 令线程pthread先运行 */ sleep(1); /* 线程pthread睡眠2s,此时main可以先执行 */ printf('mian continue!n'); /* 等待线程pthread释放 */ if (pthread_join(tidp, NULL)) { printf('thread is not exit...n'); return -2; } return 0;}
编译与执行结果
编译与执行结果如下图所示,可以看到主线程main和线程pthread交替执行。也就是说是当我们创建了线程pthread之后,两个线程都在执行,证明创建成功。另外,可以看到创建线程pthread时候,传入的参数被正确打印。
到此这篇关于linux创建线程之pthread_create的具体使用的文章就介绍到这了,更多相关linux pthread_create内容请搜索优爱好网以前的文章或继续浏览下面的相关文章希望大家以后多多支持优爱好网!
相关文章:
1. Win11右键没有压缩选项怎么办?Win11右键没有压缩选项的解决方法2. Win11 文件资源管理器将有重大更新,新设计泄露3. Win11发布预览版Build 22000.1639更新补丁KB5022905推送(附更新修复内容汇总)4. KB5022845导致Win1122H2更新驱动失败 Surface出现0x80070103错误5. Win11回退按钮没反应怎么办?Win11回退按钮没反应的解决方法6. Win11开机后出现explorer.exe应用程序错误怎么解决? exe应用程序错误解决办法7. Win11 预览版25300怎么开启文件资源管理器图库隐藏功能?8. 为Win12让路:Win11 2023终极正式版来了9. Win11控制面板一直闪烁怎么回事?Win11控制面板打不开一直闪解决方法10. Win11 release preview通道是什么?release preview频道更新Win11好吗?