pthread_CREATE函数
我们提供的服务有:成都网站建设、网站建设、微信公众号开发、网站优化、网站认证、菏泽ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的菏泽网站制作公司
函数简介
pthread_create是UNIX环境创建线程函数
头文件
#include
函数声明
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#include #include /* 声明结构体 */ 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:%d\n",temp->num); printf("member->name:%s\n",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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
分享题目:linux创建线程之pthread_create的具体使用
网站URL:http://www.shufengxianlan.com/qtweb/news17/18917.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联