[Linux]关于pthread_detach

pthread_detach   建立一个线程默认的状态是joinable, 若是一个线程结束运行但没有被join,则它的状态相似于进程中的Zombie Process,即还有一部分资源没有被回收(主要是pthread_t结构),因此建立线程者应该调用pthread_join来等待线程运行结束,并可获得线程的退出代码,回收其资源(相似于wait,waitpid)   可是调用pthread_join(pthread_id)后,若是该线程没有运行结束,调用者会被阻塞,在有些状况下咱们并不但愿如此,好比在Web服务器中当主线程为每一个新来的连接建立一个子线程进行处理的时候,主线程并不但愿由于调用pthread_join而阻塞(由于还要继续处理以后到来的连接),这时能够在子线程中加入代码   pthread_detach(pthread_self())   或者父线程调用   pthread_detach(thread_id)(非阻塞,可当即返回)   这将该子线程的状态设置为detached,则该线程运行结束后会自动释放全部资源, 并且也是不可joinable的。服务器

相关文章
相关标签/搜索