pthread simple example: pthread_join



pthread_join 是等待其他的thread結束後才會return
寫的代碼中如果沒有pthread_join主線程會很快結束從而使整個進程結束,從而使創建的兩個線程沒有機會開始執行就結束了,所以沒有輸出。加入pthread_join後,主線程會一直等待直到等待的線程結束自己才結束,使創建的線程有機會執行。

pthread_create 一建立thread之後即開始執行

如果對於創建的線程如果不調用pthread_join,會造成什麼樣的後果
有可能子線程沒被執行完就退出主線程了!

能不能說清楚一下點,為什麼會這樣,如果在線程裡加上控制,應該就不會出現這個問題吧
When a joinable thread terminates, its memory resources (thread
descriptor and stack) are not deallocated until another thread performs
pthread_join on it. Therefore, pthread_join must be called once for
each joinable thread created to avoid memory leaks.
警防內存洩露

程序的主線程結束了, 這個程序的進程就over了。 進程結束時,其他線程就被清理了。也就是執行不倒了。
主要就是防止在子進程結束完之前結束主進程。

所以說,加個pthread_join,既可防止內存洩露,又可以知道子線程的退出狀態,而不是所謂的子線程無法運行下去。要知道線程還有一個狀態:DETACHED,就不需要pthread_join

發表迴響