Linux多執行緒學習(三)執行緒屬性

2021-09-19 12:21:42 字數 1143 閱讀 9691

執行緒的建立函式pthread_creat的第二個引數為pthread_attr_t型別的指標(預設屬性建立執行緒時賦值null),pthread_attr_t是乙個結構體型別,定義如下:

typedef struct

pthread_attr_t;

執行緒屬性的使用步驟:建立屬性物件--->以預設值初始化屬性物件--->給屬性物件賦值--->作為引數傳給pthread_create()函式。

示例:以設定執行緒的分離狀態為例,執行緒的分離狀態取值有兩種:

pthread_create_joinable 0

pthread_create_detached 1

建立執行緒屬性後,先以預設值對屬性初始化,初始化成功後,讀取一次執行緒的分離狀態(預設是非分離狀態),列印結果應該為0;接下來對執行緒的分離狀態重新賦值,設為分離狀態,在thread的入口函式中,再讀一次執行緒的分離狀態,若前面設定成功,則讀出來的結果應該為1。

#include #include #include #include #include pthread_attr_t attr;

void *pthread_test(void * pra)

printf("thread detachstatus is %d\r\n",detachstate);

pthread_exit(null);

}int main(void)

//獲取執行緒的分離狀態

res = pthread_attr_getdetachstate(&attr, &detachstate);

if(res)

printf("thread detachstatus is %d\r\n",detachstate);

//設定執行緒為分離狀態,預設是非分離狀態

res = pthread_attr_setdetachstate(&attr, pthread_create_detached);

if(res)

res = pthread_create(&thread,&attr,pthread_test,null);

if(res)

pthread_exit(null);

return 0;

}

執行結果:

多執行緒學習(三) 執行緒的屬性

屬性名稱 用途注意事項 id每個執行緒都有自己的id,用於識別不同的執行緒 被後續建立的執行緒使用 不允許被修改 name 便於使用者在開發 除錯或執行過程中區分每個不同的執行緒 定位問題等 清晰有意義的名字 預設的名稱 isdaemon true 代表是守護執行緒,false 非守護執行緒 使用者...

Posix多執行緒筆記(三) 執行緒屬性(2)

四 執行緒的排程策略 函式pthread attr setschedpolicy和pthread attr getschedpolicy分別用來設定和得到執行緒的排程策略。4.名稱 pthread attr getschedpolicy pthread attr setschedpolicy 功能 ...

Posix多執行緒筆記(三) 執行緒屬性(3)

六 執行緒的作用域 函式pthread attr setscope和pthread attr getscope分別用來設定和得到執行緒的作用域,這兩個函式的定義如下 7 名稱 pthread attr setscope pthread attr getscope 功能 獲得 設定執行緒的作用域 標頭...