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