欢迎来到天天文库
浏览记录
ID:37863506
大小:53.50 KB
页数:16页
时间:2019-06-01
《LINUX线程函数大全》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、LINUX线程函数大全线程创建一个缺省的线程缺省的线程的属性:l非绑定l未分离l一个缺省大小的堆栈l具有和父线程一样的优先级用phread_attr_init()创建一个缺省的属性对象,用属性对象创建一个线程pthread_create(3T)intpthread_create(pthread_t*tid,constpthread_attr_t*tattr,void*(*start_routine)(void*),void*arg);#includepthread_attr_ttattr;pthread_ttid;externvoid*star
2、t_routine(void*arg);void*arg;intret;/*defaultbehavior*/ret=pthread_create(&tid,NULL,start_routine,arg);/*initwithdefaultattributes*/ret=pthread_attr_init(&tattr);/*defaultbehaviorspecified*/ret=pthread_create(&tid,&tattr,start_routine,arg);tattr中含有初始化线程所需的属性,值赋为NULL即缺省。start_routine是线程
3、入口函数的起始地址。当start_routine返回时,相应的线程就结束了。线程结束时的退出状态值是start_routine函数用phread_exit()函数返回的返回值。当pthread_create()函数调用成功时,线程标识符保存在参数tid指针指向中。返回值,pthread_create()成功后返回0,EAGAIN超过了某个限制,如LWPs过多。EINVALtattr值非法。创建子线程时,传给子线程的输入参数最好是malloc()返回的指针(这样的指针指向进程堆中的存储空间)或指向全局变量的指针,而不要是指向局部变量的指针。因为当子线程访问输入参数时,
4、创建子线程的函数可能已结束,局部变量也就不存在了。等待线程结束pthread_join(3T)intpthread_join(pthread_ttid,void**status);#includepthread_ttid;intret;intstatus;/*waitingtojointhread“tid”withstatus*/ret=pthread_join(tid,&status);/*waitingtojointhread“tid”withoutstatus*/ret=pthread_join(tid,NULL);pthread_joi
5、n()会阻塞调用它的线程,直到参数tid指定的线程结束。tid指定的线程必须在当前进程中,且必须是非分离的。status接收指定线程终止时的返回状态码。不能有多个线程等待同一个线程终止,否则返回错误码ESRCH当pthread_join()返回时,终止线程占用的堆栈等资源已被回收。返回值:成功返回0ESRCHtid指定的线程不是一个当前线程中合法且未分离的线程。EDEADLKtid指定的是当前线程。EINVALtid非法。分离一个线程pthread_detach(3T)将非分离线程设置为分离线程。intpthread_detach(pthread_ttid);#in
6、cludepthread_ttid;intret;ret=pthread_detach(tid);该函数通知线程库,当线程终止以后,tid所指线程的内存可以被立即收回。返回值:成功返回0EINVALtid所指线程不是一个合法线程。ESRCHtid指定的线程不是一个当前线程中合法且未分离的线程。为线程数据创建一个键多线程的c语言程序具有三种数据:局部变量,全局变量,线程数据(TSD)TSD类似于全局变量,但是线程私有的。每个TSD都有个键同他相关联。pthread_key_create(3T)intpthread_key_create(pthre
7、ad_key_t*key,void(*destructor)(*void));#includepthread_key_tkey;intret;/*keycreatewithoutdestructor*/ret=pthread_key_create(&key,NULL);/*keycreatewithdestructor*/ret=pthread_key_destructor(&key,destructor);该函数成功时,份配的建放在key中,必须保证key指向的内存区有效。destructor用来释放不再需要的内存。返回值:成功返回0EA
此文档下载收益归作者所有