C++多线程学习
linux線程執(zhí)行和windows不同,pthread有兩種狀態(tài)joinable狀態(tài)和unjoinable狀態(tài)
?一個(gè)線程默認(rèn)的狀態(tài)是joinable,如果線程是joinable狀態(tài),當(dāng)線程函數(shù)自己返回退出時(shí)或pthread_exit時(shí)都不會(huì)釋放線程所占用堆棧和線程描述符(總計(jì)8K多)。只有當(dāng)你調(diào)用了pthread_join之后這些資源才會(huì)被釋放。
若是unjoinable狀態(tài)的線程,這些資源在線程函數(shù)退出時(shí)或pthread_exit時(shí)自動(dòng)會(huì)被釋放。
unjoinable屬性可以在pthread_create時(shí)指定,或在線程創(chuàng)建后在線程中pthread_detach自己, 如:pthread_detach(pthread_self()),將狀態(tài)改為unjoinable狀態(tài),確保資源的釋放。如果線程狀態(tài)為 joinable,需要在之后適時(shí)調(diào)用pthread_join.
轉(zhuǎn)載于:https://www.cnblogs.com/fkissx/p/4644006.html
總結(jié)
- 上一篇: [ccf 4] 网络延时
- 下一篇: s3c2440移植MQTT