Posix多執行緒筆記(三) 執行緒屬性(3)

2021-06-29 15:57:55 字數 2713 閱讀 9747

六、執行緒的作用域

函式pthread_attr_setscope和pthread_attr_getscope分別用來設定和得到執行緒的作用域,這兩個函式的定義如下:

7. 名稱::

pthread_attr_setscope

pthread_attr_getscope

功能:獲得/設定執行緒的作用域

標頭檔案:

#include

函式原形:

int pthread_attr_setscope(pthread_attr_t *attr,int scope);

int pthread_attr_getscope(const pthread_attr_t *attr,int *scope);

引數:attr           執行緒屬性變數

scope         執行緒的作用域

返回值:

若成功返回0,若失敗返回-1。

這兩個函式具有兩個引數,第1個是指向屬性物件的指標,第2個是作用域或指向作用域的指標,作用域控制線程是否在程序內或在系統級上競爭資源,可能的值是pthread_scope_process(程序內競爭資源)pthread_scope_system.(系統級上競爭資源)。

七、執行緒堆疊的大小

函式pthread_attr_setstacksize和pthread_attr_getstacksize分別用來設定和得到執行緒堆疊的大小,這兩個函式的定義如下所示:

8. 名稱::

pthread_attr_getdetstacksize

pthread_attr_setstacksize

功能:獲得/修改執行緒棧的大小

標頭檔案:

#include

函式原形:

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);

引數:attr           執行緒屬性變數

stacksize       堆疊大小

返回值:

若成功返回0,若失敗返回-1。

這兩個引數具有兩個引數,第1個是指向屬性物件的指標,第2個是堆疊大小或指向堆疊大小的指標

如果希望改變棧的預設大小,但又不想自己處理執行緒棧的分配問題,這時使用pthread_attr_setstacksize函式就非常用用。

八、執行緒堆疊的位址

函式pthread_attr_setstackaddr和pthread_attr_getstackaddr分別用來設定和得到執行緒堆疊的位置,這兩個函式的定義如下:

9. 名稱::

pthread_attr_setstackaddr

pthread_attr_getstackaddr

功能:獲得/修改執行緒棧的位置

標頭檔案:

#include

函式原形:

int pthread_attr_getstackaddr(const pthread_attr_t *attr,void **stackaddf);

int pthread_attr_setstackaddr(pthread_attr_t *attr,void *stackaddr);

引數:attr           執行緒屬性變數

stackaddr      堆疊位址

返回值:

若成功返回0,若失敗返回-1。

這兩個函式具有兩個引數,第1個是指向屬性物件的指標,第2個是堆疊位址或指向堆疊位址的指標。

九、執行緒棧末尾的警戒緩衝區大小

函式pthread_attr_getguardsize和pthread_attr_setguardsize分別用來設定和得到執行緒棧末尾的警戒緩衝區大小,這兩個函式的定義如下:

10.

名稱::

pthread_attr_getguardsize

pthread_attr_setguardsize

功能:獲得/修改執行緒棧末尾的警戒緩衝區大小

標頭檔案:

#include

函式原形:

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);

引數:

返回值:

若成功返回0,若失敗返回-1。

執行緒屬性guardsize控制著執行緒棧末尾之後以避免棧溢位的擴充套件記憶體大小。這個屬性預設設定為pagesize個位元組。可以把guardsize執行緒屬性設為0,從而不允許屬性的這種特徵行為發生:在這種情況下不會提供警戒快取區。同樣地,如果對執行緒屬性stackaddr作了修改,系統就會假設我們會自己管理棧,並使警戒棧緩衝區機制無效,等同於把guardsize執行緒屬性設為0。

Posix多執行緒筆記(三) 執行緒屬性(2)

四 執行緒的排程策略 函式pthread attr setschedpolicy和pthread attr getschedpolicy分別用來設定和得到執行緒的排程策略。4.名稱 pthread attr getschedpolicy pthread attr setschedpolicy 功能 ...

Linux多執行緒學習(三)執行緒屬性

執行緒的建立函式pthread creat的第二個引數為pthread attr t型別的指標 預設屬性建立執行緒時賦值null pthread attr t是乙個結構體型別,定義如下 typedef struct pthread attr t 執行緒屬性的使用步驟 建立屬性物件 以預設值初始化屬性...

多執行緒學習(三) 執行緒的屬性

屬性名稱 用途注意事項 id每個執行緒都有自己的id,用於識別不同的執行緒 被後續建立的執行緒使用 不允許被修改 name 便於使用者在開發 除錯或執行過程中區分每個不同的執行緒 定位問題等 清晰有意義的名字 預設的名稱 isdaemon true 代表是守護執行緒,false 非守護執行緒 使用者...