linux多线程编程的基本的函数

linux多线程编程的基本的函数

ID:14764043

大小:50.50 KB

页数:19页

时间:2018-07-30

linux多线程编程的基本的函数_第1页
linux多线程编程的基本的函数_第2页
linux多线程编程的基本的函数_第3页
linux多线程编程的基本的函数_第4页
linux多线程编程的基本的函数_第5页
资源描述:

《linux多线程编程的基本的函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux多线程编程的基本的函数Linux多线程编程的基本的函数1线程创建函数原型:#includeintpthread_create(pthread_t*restricttidp,constpthread_attr_t*restrictattr,void*(*start_rtn)(void),void*restrictarg);返回值:若是成功建立线程返回0,否则返回错误的编号形式参数:pthread_t*restricttidp要创建的线程的线程id指针constpthread_attr_t*restrictattr创

2、建线程时的线程属性void*(start_rtn)(void)返回值是void类型的指针函数vodi*restrictargstart_rtn的行参例题1:功能:测试建立一个新的线程程序名称:pthread_test.c#include#includevoid*create(void*arg)...{printf("newthreadcreated.....");}intmain(intargc,char*argv[])...{pthread_ttidp;interror;error=pthread_cr

3、eate(&tidp,NULL,create,NULL);if(error!=0)......{printf("pthread_createisnotcreated...");return-1;}printf("prthread_createiscreated...");return0;}编译方法:#gcc-Wall-lpthreadpthread_test.c因为pthread的库不是linux系统的库,所以在进行编译的时候要加上-lpthread,否则编译不过,会出现下面错误thread_test.c:在函数‘create’中:thread

4、_test.c:7:警告:在有返回值的函数中,程序流程到达函数尾/tmp/ccOBJmuD.o:Infunction'main':thread_test.c:(.text+0x4f):对‘pthread_create’未定义的引用collect2:ld返回1现在我们能建立了一个线程了,我们可以从函数的原型看到,在创建线程的时候,是可以在对我们的函数进行传递参数,在pthread_create的第四个行参。我们看一下例题2~3.例题2功能:向新的线程传递整形值程序名称:pthread_int.c#include#include<

5、pthread.h>#includevoid*create(void*arg)...{int*num;num=(int*)arg;printf("createparameteris%d",*num);return(void*)0;}intmain(intargc,char*argv[])...{pthread_ttidp;interror;inttest=4;int*attr=&test;error=pthread_create(&tidp,NULL,create,(void*)attr);if(error!=0)...{p

6、rintf("pthread_createiscreatedisnotcreated...");return-1;}sleep(1);printf("pthread_createiscreatediscreated...");return0;}编译方法:gcc-lpthreadthread_int.c-Wall执行结果:createparameteris4pthread_createiscreatediscreated...例题总结:可以看出来,我们在main函数中传递的整行指针,传递到我们新建的线程函数中。在上面的例子可以看出来我们向新的线程

7、传入了另一个线程的int数据,线程之间还可以传递字符串或是更复杂的数据结构。例题3:程序功能:向新建的线程传递字符串程序名称:thread_char.c#include#include#includevoid*create(void*arg)...{char*name;name=(char*)arg;printf("argis%s",name);return(void*)0;}intmain(intargc,char*argv[])...{char*a="wang";interror;

8、pthread_ttidp;error=pthread_create(&tidp,NULL,create,(void*)a);if(error!=0)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。