线程的分离状态(detached state)

it2022-06-24  98

说到线程的分离状态,我认为,之所以会有这个状态,是因为系统对某些线程的终止状态根本不感兴趣导致的。

我们知道,进程中的线程可以调用:

[cpp]  view plain copy print ? int pthread_join(pthread_t tid, void **rval_ptr);   来等待某个线程的终止,获得该线程的终止状态,并收回所占的资源。如果对线程的返回状态不感兴趣,可以将rval_ptr设置为NULL。也可以调用:

[cpp]  view plain copy print ? int pthread_detach(pthread_t tid);   将此线程设置为分离状态,设置为分离状态的线程在线程结束时,操作系统会自动收回它所占的资源。设置为分离状态的线程,不能再调用pthread_join()等待其结束。

如果在创建线程时就知道不需要了解线程的终止状态,那么可以通过修改pthread_attr_t结构中的detachstate属性,让线程以分离状态启动,调用函数如下:

[cpp]  view plain copy print ? int pthread_attr_detach(pthread_attr_t *attr, int detachstate);   总之线程以 正常状态启动 还是以 分离状态启动 最根本的出发点是系统是否需要知道线程的终止状态;

这两种状态的区别是:

正常状态:可以由其他线程终止,回收资源。(可以看成有人等,有人陪)分离状态:不能被其他线程终止,存储资源在它终止时由系统自动回收释放。(没人等,没人陪,自生自灭,死后回归大自然)

Otc 4, 2012 23:45 @dorm

原文:http://blog.csdn.net/anonymalias/article/details/8040156

转载于:https://www.cnblogs.com/Zoran-/p/5819275.html


最新回复(0)