linux多執行緒相關的API-(2)--執行緒屬性
阿新 • • 發佈:2019-01-22
參考:https://blog.csdn.net/pbymw8iwm/article/details/6721038
《Linux多執行緒實踐(三)執行緒的基本屬性設定API》https://www.cnblogs.com/zsychanpin/p/6940673.html
執行緒屬性結構如下:
typedef struct
{
int detachstate;執行緒的分離狀態
int schedpolicy;執行緒排程策略
structsched_paramschedparam;執行緒的排程引數
int inheritsched;執行緒的繼承性
intscope;執行緒的作用域
size_tguardsize;執行緒棧末尾的警戒緩衝區大小
intstackaddr_set;
void*stackaddr;執行緒棧的位置
size_tstacksize;執行緒棧的大小
}pthread_attr_t;
設定執行緒屬性,一般在建立執行緒時來指定,pthread_create的第二個引數就是執行緒屬性,該形參傳入NULL意味著使用預設屬性。如果要自定義執行緒的屬性,應當填充一個pthread_attr_t結構變數並作為實參傳進去。
相關函式:
pthread_attr_init
pthread_attr_setXXXX
pthread_attr_getXXXX
pthread_attr_destroy
標準應用步驟/例項:
pthread_t tid;//子執行緒ID pthread_attr_t attr;//執行緒屬性 pthread_attr_init(&attr);//把attr結構的成員都初始化為預設值(合法值) pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//修改屬性成員:分離態 pthread_attr_setstacksize(&attr, 2048);//修改屬性成員: 堆疊大小 //屬性結構體的每一項屬性成員都有對應的set和get函式,請檢視上面的參考連結 //帶自定義屬性,建立子執行緒 status = pthread_create(&tid, &attr, thread_entry, NULL); if(0 == status) { printf("creat thread ok, tid = %ld, with para: %d\n", tid, arg); } else { printf("creat thread failed, error info: %s\n", strerror(errno)); return -1; } pthread_attr_destroy(&attr);//屬性值使用完必須銷燬