執行緒屬性有下面幾個方面:
作用域(scope) 決定執行緒優先順序範圍,程序內還是系統範圍。
pthread_scope_process 程序
pthread_scope_system 系統
分離狀態(deteached state) 分離執行緒在結束的時候不保留任何狀態資訊,
釋放它所占有的資源,不能用join同步。
ptheard_create_detached 分離狀態
ptheard_create_joinable 預設狀態
優先順序(priority) 可以設定改變執行緒的優先順序。
sched_get_priority_max 最大
sched_get_priority_min 最小
排程策略 可以設定和改變執行緒的排程策略
sched_fifo 先進先出
sched_rr 時間片輪轉
執行緒棧大小 pthead_attr_setstacksize[/getstacksize]
執行緒棧位址 pthead_attr_setstackaddr[/getstackaddr]
繼承屬性 :
繼承性的可能值是pthread_inherit_sched(表示新現成將繼承建立執行緒的排程策略和引數)和pthread_explicit_sched(表示使用在schedpolicy和schedparam屬性中顯式設定的排程策略和引數)。
要使用使用在
schedpolicy和schedparam屬性中顯式設定的排程資訊。必須在設定之前將inheritsched屬性設定為pthread_explicit_sched.
執行緒屬性函式:
int pthread_attr_init(pthread_attr_t *attr);
int pthread_attr_destroy(pthread_attr_t *attr);
int pthread_attr_getdetachstate(const pthread_attr_t * attr,int *detachstate);
int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate);
int pthread_attr_getinheritsched(const pthread_attr_t *attr,int *inheritsched);
int pthread_attr_setinheritsched(pthread_attr_t *attr,int inheritsched);
int pthread_attr_getschedpolicy(const pthread_attr_t *attr,int *policy);
int pthread_attr_setschedpolicy(pthread_attr_t *attr,int policy);
int pthread_attr_getschedparam(const pthread_attr_t *attr,struct sched_param *param);
int pthread_attr_setschedparam(pthread_attr_t *attr,const struct sched_param *param);
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
int pthread_attr_setscope(pthread_attr_t *attr,int scope);
int pthread_attr_getscope(const pthread_attr_t *attr,int *scope);
int pthread_attr_getstacksize(const pthread_attr_t *restrict attr,size_t *restrict stacksize);
int pthread_attr_setstacksize(pthread_attr_t *attr ,size_t *stacksize);
int pthread_attr_getstackaddr(const pthread_attr_t *attr,void **stackaddf);
int pthread_attr_setstackaddr(pthread_attr_t *attr,void *stackaddr);
int pthread_attr_getguardsize(const pthread_attr_t *restrict attr,size_t *restrict guardsize);
int pthread_attr_setguardsize(pthread_attr_t *attr ,size_t *guardsize);
#include #include #include #include void *thread_function(void *arg);
char message = "hello world";
int thread_finished = 0;
int main()
res = pthread_attr_setdetachstate(&thread_attr, pthread_create_detached);
if (res != 0)
res = pthread_create(&a_thread, &thread_attr, thread_function, (void *)message);
if (res != 0)
(void)pthread_attr_destroy(&thread_attr);
while(!thread_finished)
printf("other thread finished, bye!\n");
exit(exit_success);
}void *thread_function(void *arg)
Posix執行緒程式設計指南 4 執行緒終止
執行緒終止方式 一般來說,posix的執行緒終止有兩種情況 正常終止和非正常終止。執行緒主動呼叫pthread exit 或者從執行緒函式中return都將使執行緒正常退出,這是可預見的退出方式 非正常終止是執行緒在其他執行緒的干預下,或者由於自身執行出錯 比如訪問非法位址 而退出,這種退出方式是不...
posix執行緒 執行緒的取消
初看這個主題時,覺得實在簡單。在我印象中,執行緒取消的實現通常是宣告乙個全域性變數來代表取消標誌,乙個執行緒在最開始的大while中判斷該標誌是否被設定,如果被設定就跳出迴圈。但是這有乙個問題是,如果程式中有n個執行緒都有可能被取消,那麼我們是否要宣告n個全域性變數來單獨控制它們的取消?posix提...
Posix多執行緒筆記(三) 執行緒屬性(2)
四 執行緒的排程策略 函式pthread attr setschedpolicy和pthread attr getschedpolicy分別用來設定和得到執行緒的排程策略。4.名稱 pthread attr getschedpolicy pthread attr setschedpolicy 功能 ...