线程的分离状态是线程的一种属性,线程的属性结构为:
typedef struct
{
int detachstate; //分离状态
int schedpolicy; //调度策略
structsched_param schedparam; //调度参数
int inheritsched; //线程继承性
int scope; //线程作用域
size_t guardsize; //线程栈末尾的警戒缓冲区大小
int stackaddr_set;
void* stackaddr; //线程栈位置
size_t stacksize; //线程栈大小
} pthread_attr_t;
线程的分离状态是指线程的生命结束后资源的回收是否受其他线程或者程序主线程的控制,默认的线程分离状态为结合状态(join-able),需要由其他线程调用pthread_join(pthread_t pth, void** rval)等待线程pth终止,并回收线程占用的系统资源,但是等待线程会被阻塞,直到监控的线程终止。如果没有线程调用pthread_join函数,那么创建的线程资源在程序结束前不会被系统自动回收。对于detach状态的线程,线程终止后系统会自动回收线程占用的资源。
可以通过pthread_getdetachstate函数获取线程的分离状态,也可以通过pthread_setdetachstate函数设置线程的分离状态。
转载请注明原文地址: https://ju.6miu.com/read-367.html