1. 程式人生 > >pthread_cancel 與記憶體釋放的小技巧

pthread_cancel 與記憶體釋放的小技巧

要學會思考,把問題想清楚了,儘量找到最好的解決方法! 主執行緒 關閉子執行緒時pthread_cancel()不能讓子執行緒立即退出,執行緒繼續執行直到有執行緒取消點,但pthread_cancel()卻自動返回,讓主執行緒繼續執行,但主執行緒不得不釋放記憶體,這樣子執行緒就有可能訪問到釋放的記憶體中,導致段錯誤。這種問題可以通過 設定標誌位和pthread_join()來解決,但是有可能時間過長(比如子執行緒中有個sleep())。 解決方案是,主執行緒初始化的時候就釋放記憶體,而子執行緒結束時不釋放記憶體。也就是說把本次記憶體釋放工作,交給下次系統初始化去做,這樣子執行緒愛什麼時候退出就什麼時候退出吧!perfict!