執行緒的建立函式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 功能 獲得 設定執行緒的作用域 標頭...