天天看點

linux下多線程 之 pthread_detach(pthread_self())

pthread有兩種狀态joinable狀态和unjoinable狀态

1、如果線程是joinable狀态,當線程函數自己傳回退出時或pthread_exit時都不會釋放線程所占用堆棧和線程描述符(總計8K多)。隻有當你調用了pthread_join之後這些資源才會被釋放。

2、若是unjoinable狀态的線程,這些資源線上程函數退出時或pthread_exit時自動會被釋放。

注:

unjoinable屬性可以在pthread_create時指定,或線上程建立後線上程中pthread_detach自己, 如:pthread_detach(pthread_self()),将狀态改為unjoinable狀态,確定資源的釋放。或者将線程置為 joinable,然後适時調用pthread_join.

摘自  http://kb.cnblogs.com/a/1285801/

其實簡單的說就是線上程函數頭加上 pthread_detach(pthread_self())的話,線程狀态改變,在函數尾部直接 pthread_exit線程就會自動退出。省去了給線程擦屁股的麻煩

https://blog.csdn.net/zjc156m/article/details/9028643 

繼續閱讀