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是成...