多執行緒pthread join 的兩種作用

2021-10-03 06:10:44 字數 716 閱讀 1108

pthread_join()函式原型:

int pthread_join(pthread_t thread, void **retval);

args:

pthread_t thread: 被連線線程的執行緒號

void **retval   : 指向乙個指向被連線線程的返回碼的指標的指標

return:

執行緒連線的狀態,0是成功,非0是失敗

當呼叫 pthread_join() 時,當前執行緒會處於阻塞狀態,直到被呼叫的執行緒結束後,當前執行緒才會重新開始執行。當 pthread_join() 函式返回後,被呼叫執行緒才算真正意義上的結束,它的記憶體空間也會被釋放(如果被呼叫執行緒是非分離的)。這裡有三點需要注意:

被釋放的記憶體空間僅僅是系統空間,你必須手動清除程式分配的空間,比如 malloc() 分配的空間。

乙個執行緒只能被乙個執行緒所連線。

被連線的執行緒必須是非分離的,否則連線會出錯。

所以可以看出pthread_join()有兩種作用:

用於等待其他執行緒結束:當呼叫 pthread_join() 時,當前執行緒會處於阻塞狀態,直到被呼叫的執行緒結束後,當前執行緒才會重新開始執行。

對執行緒的資源進行**:如果乙個執行緒是非分離的(預設情況下建立的執行緒都是非分離)並且沒有對該執行緒使用 pthread_join() 的話,該執行緒結束後並不會釋放其記憶體空間,這會導致該執行緒變成了「殭屍執行緒」。

————————————————

多執行緒pthread join 的作用

pthread join 函式原型 int pthread join pthread t thread,void retval args pthread t thread 被連線線程的執行緒號 void retval 指向乙個指向被連線線程的返回碼的指標的指標 引數 thread 執行緒識別符號,即...

多執行緒 pthread join函式詳解

from 單處理器上的linux多執行緒,是通過分時操作完成的 此時互斥鎖的作用,只有在時間足夠的情況下才能體現出來,即有時執行緒內需要延時 否則只有第乙個執行緒不斷解鎖和獲鎖,別的執行緒在第乙個執行緒執行完前無法獲得互斥鎖。函式pthread join用來等待乙個執行緒的結束。函式原型為 exte...

多執行緒 pthread join函式詳解

單處理器上的linux多執行緒,是通過分時操作完成的 此時互斥鎖的作用,只有在時間足夠的情況下才能體現出來,即有時執行緒內需要延時 否則只有第乙個執行緒不斷解鎖和獲鎖,別的執行緒在第乙個執行緒執行完前無法獲得互斥鎖。函式pthread join用來等待乙個執行緒的結束。函式原型為 extern in...