Linux 多线程环境下 线程joinable状态和unjoinable状态

这里主要讨论这两种状态下,线程终止以及资源释放的问题

linux线程中,pthread有两种状态joinable状态unjoinable状态

joinable状态下,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符。只有当你调用了pthread_join之后这些资源才会被释放,这是需要main函数或者其他线程去调用pthread_join函数。


unjoinable状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放。设置unjoinable状态设置有两种办法 一是可以在pthread_create时指定,二是线程创建后在线程中pthread_detach自己 pthread_detach(pthread_self()),状态改为unjoinable状态,确保资源的释放

你可能感兴趣的:(Linux 多线程环境下 线程joinable状态和unjoinable状态)