多執行緒pthread join 的作用

2021-09-29 04:44:43 字數 1198 閱讀 9357

pthread_join()函式原型:

int

pthread_join

(pthread_t thread, void **retval)

;

args:

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

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

引數 :thread: 執行緒識別符號,即執行緒id,標識唯一執行緒。

retval: 使用者定義的指標,用來儲存被等待執行緒的返回值。可以是null。

return:

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

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

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

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

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

pthread_join的應用:

pthread_join使乙個執行緒等待另乙個執行緒結束。

**中如果沒有pthread_join主線程會很快結束從而使整個程序結束,從而使建立的執行緒沒有機會開始執行就結束了。加入pthread_join後,主線程會一直等待直到等待的執行緒結束自己才結束,使建立的執行緒有機會執行。

所有執行緒都有乙個執行緒號,也就是thread id。其型別為pthread_t。通過呼叫pthread_self()函式可以獲得自身的執行緒號。

pthread_join()函式原型:

int

pthread_join

(pthread_t thread, void **retval)

;

args:

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

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

多執行緒 pthread join函式詳解

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

多執行緒 pthread join函式詳解

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

多執行緒pthread join 的兩種作用

pthread join 函式原型 int pthread join pthread t thread,void retval args pthread t thread 被連線線程的執行緒號 void retval 指向乙個指向被連線線程的返回碼的指標的指標 return 執行緒連線的狀態,0是成...