linux 執行緒 執行緒屬性

2021-07-09 22:23:35 字數 2267 閱讀 8578

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,...