欢迎来到天天文库
浏览记录
ID:36849544
大小:3.93 MB
页数:16页
时间:2019-05-16
《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创建线程时的线程属性void*(start_rtn)(void)返回值是void类型的指针函数vodi*re
2、strictargstart_rtn的行参例题1:功能:测试建立一个新的线程程序名称:pthread_test.c#include#includevoid*create(void*arg)...{printf("newthreadcreated.....");}intmain(intargc,char*argv[])...{pthread_ttidp;interror;error=pthread_create(&tidp,NULL,create,NULL);if(error!=0)......{printf("pthread_createisn
3、otcreated...");return-1;}printf("prthread_createiscreated...");return0;}编译方法:#gcc-Wall-lpthreadpthread_test.c因为pthread的库不是linux系统的库,所以在进行编译的时候要加上-lpthread,否则编译不过,会出现下面错误thread_test.c:在函数‘create’中:thread_test.c:7:警告:在有返回值的函数中,程序流程到达函数尾/tmp/ccOBJmuD.o:Infunction`main':thread_test.c:(.text+0x4f):对
4、‘pthread_create’未定义的引用collect2:ld返回1现在我们能建立了一个线程了,我们可以从函数的原型看到,在创建线程的时候,是可以在对我们的函数进行传递参数,在pthread_create的第四个行参。我们看一下例题2~3.例题2功能:向新的线程传递整形值程序名称:pthread_int.c#include#include#includevoid*create(void*arg)...{int*num;num=(int*)arg;printf("createparameteris%d",*num);ret
5、urn(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)...{printf("pthread_createiscreatedisnotcreated...");return-1;}sleep(1);printf("pthread_createiscreatediscreated...");return0;}编译方法:gcc-lp
6、threadthread_int.c-Wall执行结果:createparameteris4pthread_createiscreatediscreated...例题总结:可以看出来,我们在main函数中传递的整行指针,传递到我们新建的线程函数中。在上面的例子可以看出来我们向新的线程传入了另一个线程的int数据,线程之间还可以传递字符串或是更复杂的数据结构。例题3:程序功能:向新建的线程传递字符串程序名称:thread_char.c#include#include#includevoid*create(void*arg)..
7、.{char*name;name=(char*)arg;printf("argis%s",name);return(void*)0;}intmain(intargc,char*argv[])...{char*a="wang";interror;pthread_ttidp;error=pthread_create(&tidp,NULL,create,(void*)a);if(error!=0)...{printf("pthreadisnotcreated")
此文档下载收益归作者所有