[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的。服務器

相關文章
相關標籤/搜索