pthread_detach()函數(shù):
????????? pthread_detach密似,是計(jì)算機(jī)用語连霉,創(chuàng)建一個(gè)線程默認(rèn)的狀態(tài)是joinable。---->可連接的
????????? 創(chuàng)建一個(gè)線程默認(rèn)的狀態(tài)是joinable, 如果一個(gè)線程結(jié)束運(yùn)行但沒有被join,則它的狀態(tài)類似于進(jìn)程中的Zombie Process--->僵尸進(jìn)程,即還有一部分資源沒有被回收(退出狀態(tài)碼)雕凹,所以創(chuàng)建線程者應(yīng)該pthread_join來等待線程運(yùn)行結(jié)束樟结,并可得到線程的退出代碼,回收其資源(類似于wait,waitpid)
但是調(diào)用pthread_join(pthread_id)后易结,如果該線程沒有運(yùn)行結(jié)束枕荞,調(diào)用者會(huì)被阻塞,在有些情況下我們并不希望如此搞动,比如在Web服務(wù)器中當(dāng)主線程為每個(gè)新來的鏈接創(chuàng)建一個(gè)子線程進(jìn)行處理的時(shí)候躏精,主線程并不希望因?yàn)檎{(diào)用pthread_join而阻塞(因?yàn)檫€要繼續(xù)處理之后到來的鏈接),這時(shí)可以在子線程中加入代碼
pthread_detach(pthread_self())
或者父線程調(diào)用
pthread_detach(thread_id)(非阻塞鹦肿,可立即返回)
這將該子線程的狀態(tài)設(shè)置為detached,則該線程運(yùn)行結(jié)束后會(huì)自動(dòng)釋放所有資源矗烛。