Linux 執行緒的分離與結合

2021-08-14 09:54:03 字數 979 閱讀 4226

在開始執行緒部分內容前,我想還是先把這個概念丟擲來,否則在開始《執行緒的建立&屬性》中會有部分內容不太清楚。

原理簡述:

在任何乙個時間點上,執行緒是可結合的(joinable),或者是分離的(detached)。

執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。在預設情況下執行緒是非分離狀態的。在這種情況下,原有的執行緒等待建立的執行緒結束。只有當pthread_join()函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。

而分離執行緒不是這樣子的,它沒有被其他的執行緒所等待,自己執行結束了,執行緒也就終止了,馬上釋放系統資源。

執行緒分離狀態的設定:

設定執行緒分離狀態的函式為pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);

第二個引數可選為pthread_create_detached(分離執行緒)和pthread_create_joinable(非分離執行緒)

執行緒屬性設定的注意事項:

如果執行緒處於joinable狀態,則只能被建立它的執行緒等待終止。(這裡涉及到資源釋放)

通過呼叫pthread_join來獲取另乙個執行緒的終止狀態並且釋放該執行緒所佔的資源。

建立detach執行緒:

1.      pthread_t tid;

2.      pthread_attr_t attr;

3.      pthread_attr_init(&attr);//初始化

4.      pthread_attr_setdetachstate(&attr,pthread_create_detached);//進行設定

5.      pthread_creat(&tid,&attr, void (*function)(void *), void *arg);//建立乙個以分離屬性啟動的執行緒

Linux多執行緒,執行緒的分離與結合

2 執行緒的分離與結合 在任何乙個時間點上,執行緒是可結合的 joinable 或者是分離的 detached 乙個可結合的執行緒能夠被其他執行緒收回其資源和殺死 在被其他執行緒 之前,它的儲存器資源 如棧 是不釋放的。相反,乙個分離的執行緒是不能被其他執行緒 或殺死的,它的儲存器資源在它終止時由系...

linux 執行緒的分離與可結合

介紹 在任何乙個時間點上,執行緒都是可分離或者可結合的。乙個可結合的執行緒能夠被其它執行緒收回其資源和殺 死。在其他執行緒 之前,他的儲存器資源 例如棧 是不釋放的。相反,乙個分離的執行緒是不能被其他 執行緒 或者殺死,他的儲存器資源在它終止時系統自動釋放。建立執行緒函式原型 int pthread...

執行緒的分離與結合

執行緒是可結合或分離的。乙個可結合的執行緒能夠被其他執行緒收回資源和殺死。相反,乙個分離的執行緒是不能被其他執行緒收回或殺死的,它的儲存器資源在它終止時由系統自動釋放。預設情況下,執行緒被建立為可結合的。執行緒分離函式 int pthread detach pthread t thread 由於呼叫...