執行緒的分離狀態

2021-06-09 15:38:23 字數 1134 閱讀 3291

執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。執行緒的預設屬性是非分離狀態,這種情況下, 原有的執行緒等待建立的執行緒結束。只有當 pthread_join()函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒不是這樣子的,它沒有被其他的執行緒所等待,自己運 行結束了,執行緒也就終止了,馬上釋放系統資源。程式設計師應該根據自己的需要,選擇適當的分離狀態。

從上面的描述中可以得知如果呼叫pthread_create函式建立乙個預設非分離狀態的執行緒,如果不用pthread_join()函式,執行緒結束時並不算終止,所以仍然會占用系統資源。這裡有如下幾種方法解決這個問題:

1.使用pthread_join()函式**相關記憶體區域。

pthread_t tid;

void

* state;

pthread_create

(&tid,

null

,test

,null);

pthread_join

(tid,

&state);

2.可以呼叫 pthread_detach() 函式分離執行緒。

pthread_t tid;

pthread_create

(&tid,

null

,test

,null);

pthread_detach

(tid);

當然,也可以在 thread function 中呼叫。

void

*test

(void

*arg)

3.使用執行緒屬性。

pthread_attr_t attr;

pthread_t tid;

pthread_attr_init

(&attr)

;pthread_attr_setdetachstate

(&attr,

pthread_create_detached);

pthread_create

(&tid,

&attr,

test

,null);

sleep

(3);

//等待執行緒結束

pthread_attr_destroy

(&attr);

執行緒的分離狀態

執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。執行緒的預設屬性,一般是非分離狀態,這種情況下,原有的執行緒等待建立的執行緒結束。只有當pthread join 函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒沒有被其他的執行緒所等待,自己執行結束了,執行緒也就終止...

執行緒的分離狀態

執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。執行緒的預設屬性,一般是非分離狀態,這種情況下,原有的執行緒等待建立的執行緒結束。只有當pthread join 函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒沒有被其他的執行緒所等待,自己執行結束了,執行緒也就終止...

執行緒的分離狀態

執行緒的分離狀態是執行緒的一種屬性,執行緒的屬性結構為 typedef struct int detachstate 分離狀態 int schedpolicy 排程策略 structsched param schedparam 排程引數 int inheritsched 執行緒繼承性 int sco...