卫生系统网站的建设和维护,uc浏览器官网,做网站定位,wordpress开启用户激活验证失败1、描述
linux的POSIX线程分离状态决定一个线程以什么方式来终止。默认的分离状态是可连接态#xff08;joinable#xff09;#xff0c;创建线程是参数设置为NULL#xff0c;就是默认连接态#xff0c;可以被pthread_join。
Linux的POSIX线程要么分离要么连接分别用一下…1、描述
linux的POSIX线程分离状态决定一个线程以什么方式来终止。默认的分离状态是可连接态joinable创建线程是参数设置为NULL就是默认连接态可以被pthread_join。
Linux的POSIX线程要么分离要么连接分别用一下宏表示
分离状态PTHREAD_CREAT_DETACHED连接态PTHREAD_CREAT_JOINABLE
一个可连接的线程的特点
可以被其他线程回收资源和杀死或取消不会主动释放线程占用的线程资源堆栈和描述符等即使线程自己返回或结束或调用pthread_exit都不会释放必须调用pthread_join且返回后释放资源避免僵尸线程。如果不用pthread_join父线程先于子线程退出则子线程会被init线程接管由init进程调用wait系列函数进行回收资源。
注意为避免内存泄露可连接的线程终止时要么设为可分离要么使用pthread_join释放资源。一个线程不能被多个线程等待
一个可分离的线程的特点
自己退出或者调用pthread_exit可以由系统自动回收资源
2、设置可分离线程
调用函数pthread_detach将线程设转换为可分离线程在创建时设置为可分离线程初始化线程属性结构体变量pthread_attr_init设置为可分离状态pthread_attr_setdetachstate结构体变量地址传入pthread_creat销毁初始化属性pthread_attr_destroy
pthread_detach函数原型
int pthread_detach(pthread_t pid);
pid要分离的线程ID。
pthread_attr_setdetachstate函数原型
int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate)
detachstatePTHREAD_CREAT_DETACHED 或者 PTHREAD_CREAT_JOINABLE