typedef struct
pthread_attr_t;
這個結構只是為了說明 實際結構具體系統而定 雖然如此我們並不用擔心因為
屬性值不能直接設定,須使用相關函式進行操作
int pthread_attr_init(pthread_attr_t *attr); //初始化執行緒屬性
int pthread_attr_destroy(pthread_attr_t *attr); //銷毀執行緒屬性所占用的資源
1>執行緒的分離態
非分離狀態:執行緒的預設屬性是非分離狀態,這種情況下,原有的執行緒等待建立的執行緒
結束。只有當pthread_join()函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統
資源。分離狀態:分離執行緒沒有被其他的執行緒所等待,自己執行結束了,執行緒也就終止了,馬
上釋放系統資源。應該根據自己的需要,選擇適當的分離狀態。pthread_join()接收分離態
執行緒返回出錯。
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate); //設定執行緒屬性,分離or非分
離int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate); //獲取程屬性,分離or非分離
pthread_attr_t *attr:被已初始化的執行緒屬性
int *detachstate:可選為pthread_create_detached(分離執行緒)和 pthread _create_joinable(非分離執行緒)
注意:如果是分離態那麼有可能 pthread_create返回之前就已經執行完畢 那麼pthread_create返回的tip可能是無效的
那就必須設定適當的執行緒同步
2>設定棧大小
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize);
attr 指向乙個執行緒屬性的指標
stacksize 返回執行緒的堆疊大小
返回值:若是成功返回0,否則返回錯誤的編號
當程序棧位址空間不夠用時,指定新建執行緒使用由malloc分配的空間作為自己的棧空
間。通過pthread_attr_setstackaddr和pthread_attr_getstackaddr兩個函式分別設定和獲
取執行緒的棧位址。傳給pthread_attr_setstackaddr函式的位址是緩衝區的低位址(不一定
是棧的開始位址,棧可能從高位址往低位址增長)。
#include
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);
int pthread_attr_getstackaddr(pthread_attr_t *attr, void **stackaddr);
attr: 指向乙個執行緒屬性的指標
stackaddr: 返回獲取的棧位址
返回值:若是成功返回0,否則返回錯誤的編號
說 明:函式已過時,一般用下面的新api代替
int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize);
int pthread_attr_getstack(pthread_attr_t *attr, void **stackaddr, size_t *stacksize);
attr 指向乙個執行緒屬性的指標
stackaddr 返回獲取的棧位址
stacksize 返回獲取的棧大小
返回值:若是成功返回0,否則返回錯誤的編號
還可以用這組函式設定棧大小
#include
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize);
attr 指向乙個執行緒屬性的指標
stacksize 返回執行緒的堆疊大小
返回值:若是成功返回0,否則返回錯誤的編號
普通使用者單個程序的執行緒數貌似收到了限制 最大只開到1021個 root下無限制
linux執行緒 2 執行緒屬性
執行緒屬性由資料結構pthread attr t結構表示,其定義如下所示 typedef struct pthread attr t 這個結構體在使用過程中由pthread attr init和pthread attr destory負責資料的初始化和銷毀 schepolicy 表示執行緒被排程的策...
Linux執行緒屬性
執行緒屬性識別符號 pthread attr t 包含在 pthread.h 標頭檔案中。typedef struct pthread attr t 屬性值不能直接設定,須使用相關函式進行操作,初始化的函式為pthread attr init,這個函式必須在pthread create函式之前呼叫。...
Linux執行緒屬性總結
執行緒屬性識別符號 pthread attr t 包含在 pthread.h 標頭檔案中。c view plain copy 執行緒屬性結構如下 typedef struct pthread attr t 屬性值不能直接設定,須使用相關函式進行操作,初始化的函式為pthread attr init,...