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.信號的復雜語義很難和多線程共存,應避免在多線程引入信號機制。