线程使用注意事项
1.主線程退出其他線程不退出,主線程應(yīng)調(diào)用pthread_exit;
2.避免僵尸線程:pthread_join、pthread_detach、pthread_create指定分離屬性。被join線程可能在join函數(shù)返回前就釋放完自己的所有內(nèi)存資源,所以不應(yīng)當(dāng)返回被回收線程棧中的值;(因?yàn)榇藭r(shí)釋放的棧空間又可能被重新分配出去,此時(shí)得到的返回值沒有意義)
3.malloc和mmap申請的內(nèi)存可以被其他線程釋放;
4.應(yīng)避免在多線程模型中調(diào)用fork。一個(gè)進(jìn)程中的某一個(gè)線程調(diào)用fork函數(shù)后也會(huì)生成一個(gè)子進(jìn)程,在子進(jìn)程中只有調(diào)用fork的線程存在,其他線程在子進(jìn)程中均pthread_exit,即子進(jìn)程只是繼承了父進(jìn)程中調(diào)用fork函數(shù)的那個(gè)線程的資源,遵從讀時(shí)共享、寫時(shí)復(fù)制原則;(注意盡量避免這樣使用,如果一定要使用,建議線程fork后產(chǎn)生的子進(jìn)程馬上exec)
5.信號的復(fù)雜語義很難和多線程共存,應(yīng)避免在多線程引入信號機(jī)制。
總結(jié)
- 上一篇: NPTL(Native POSIX Th
- 下一篇: 线程同步的概念