UNIX环境高级编程——线程属性之分离属性
2013-07-17 16:07
260 查看
说到线程的分离状态,我认为,之所以会有这个状态,是因为系统对某些线程的终止状态根本不感兴趣导致的。
我们知道,进程中的线程可以调用:
如果在创建线程时就知道不需要了解线程的终止状态,那么可以通过修改pthread_attr_t结构中的detachstate属性,让线程以分离状态启动,调用函数如下:
这两种状态的区别是:
正常状态:可以由其他线程终止,回收资源。
分离状态:不能被其他线程终止,存储资源在它终止时由系统自动回收释放。
我们知道,进程中的线程可以调用:
int pthread_join(pthread_t tid, void **rval_ptr);来等待某个线程的终止,获得该线程的终止状态,并收回所占的资源。如果对线程的返回状态不感兴趣,可以将rval_ptr设置为NULL。也可以调用:
int pthread_detach(pthread_t tid);将此线程设置为分离状态,设置为分离状态的线程在线程结束时,操作系统会自动收回它所占的资源。设置为分离状态的线程,不能再调用pthread_join()等待其结束。
如果在创建线程时就知道不需要了解线程的终止状态,那么可以通过修改pthread_attr_t结构中的detachstate属性,让线程以分离状态启动,调用函数如下:
int pthread_attr_detach(pthread_attr_t *attr, int detachstate);总之线程以正常状态启动还是以分离状态启动最根本的出发点是系统是否需要知道线程的终止状态;
这两种状态的区别是:
正常状态:可以由其他线程终止,回收资源。
分离状态:不能被其他线程终止,存储资源在它终止时由系统自动回收释放。
相关文章推荐
- UNIX环境高级编程——线程属性之分离属性
- UNIX环境高级编程——线程属性之分离属性
- UNIX环境高级编程(阅读笔记)——线程属性
- UNIX环境高级编程学习之第十一章线程-线程的创建、退出、等待、取消、分离
- UNIX环境高级编程——线程属性
- UNIX环境高级编程——线程属性
- UNIX环境高级编程——线程属性
- UNIX环境高级编程学习之第十二章线程控制-以分离状态创建线程
- UNIX环境高级编程——线程属性之并发度
- UNIX环境高级编程——线程属性之并发度
- UNIX环境高级编程——线程限制 && 线程属性
- UNIX环境高级编程——线程属性之并发度
- unix环境高级编程-线程控制(2)
- UNIX环境高级编程——线程和信号
- UNIX环境高级编程——管道和FIFO的额外属性
- unix 环境高级编程 线程一 创建
- UNIX环境高级编程——线程同步之条件变量以及属性
- UNIX环境高级编程——线程和信号
- Unix高级编程:线程基础、线程的创建、退出、分离、汇合、同步问题
- UNIX环境高级编程学习之第十一章线程-用互斥锁传送安全线程参数