執行緒的分離狀態是執行緒的一種屬性,執行緒的屬性結構為:
typedef struct
int detachstate; //分離狀態int schedpolicy; //排程策略
structsched_param schedparam; //排程引數
int inheritsched; //執行緒繼承性
int scope; //執行緒作用域
size_t guardsize; //執行緒棧末尾的警戒緩衝區大小
int stackaddr_set;
void* stackaddr; //執行緒棧位置
size_t stacksize; //執行緒棧大小
} pthread_attr_t;執行緒的分離狀態是指執行緒的生命結束後資源的**是否受其他執行緒或者程式主線程的控制,預設的執行緒分離狀態為結合狀態(join-able),需要由其他執行緒呼叫pthread_join(pthread_t pth, void** rval)等待執行緒pth終止,並**執行緒占用的系統資源,但是等待執行緒會被阻塞,直到監控的執行緒終止。如果沒有執行緒呼叫pthread_join函式,那麼建立的執行緒資源在程式結束前不會被系統自動**。對於detach狀態的執行緒,執行緒終止後系統會自動**執行緒占用的資源。
可以通過pthread_getdetachstate函式獲取執行緒的分離狀態,也可以通過pthread_setdetachstate函式設定執行緒的分離狀態。
執行緒的分離狀態
執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。執行緒的預設屬性是非分離狀態,這種情況下,原有的執行緒等待建立的執行緒結束。只有當 pthread join 函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒不是這樣子的,它沒有被其他的執行緒所等待,自己運 行結束了,...
執行緒的分離狀態
執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。執行緒的預設屬性,一般是非分離狀態,這種情況下,原有的執行緒等待建立的執行緒結束。只有當pthread join 函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒沒有被其他的執行緒所等待,自己執行結束了,執行緒也就終止...
執行緒的分離狀態
執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。執行緒的預設屬性,一般是非分離狀態,這種情況下,原有的執行緒等待建立的執行緒結束。只有當pthread join 函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒沒有被其他的執行緒所等待,自己執行結束了,執行緒也就終止...