天天看點

線程使用注意事項

1.主線程退出其他線程不退出,主線程應調用pthread_exit;

2.避免僵屍線程:pthread_join、pthread_detach、pthread_create指定分離屬性。被join線程可能在join函數傳回前就釋放完自己的所有記憶體資源,是以不應當傳回被回收線程棧中的值;(因為此時釋放的棧空間又可能被重新配置設定出去,此時得到的傳回值沒有意義)

3.malloc和mmap申請的記憶體可以被其他線程釋放;

4.應避免在多線程模型中調用fork。一個程序中的某一個線程調用fork函數後也會生成一個子程序,在子程序中隻有調用fork的線程存在,其他線程在子程序中均pthread_exit,即子程序隻是繼承了父程序中調用fork函數的那個線程的資源,遵從讀時共享、寫時複制原則;(注意盡量避免這樣使用,如果一定要使用,建議線程fork後産生的子程序馬上exec)

5.信号的複雜語義很難和多線程共存,應避免在多線程引入信号機制。

繼續閱讀