六、執行緒的作用域
函式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。
Linux多執行緒基礎 基礎)
程序 乙個正在執行的程式,它是資源分配的最小單位 執行緒 是程式執行的最小單位,可以理解為程序的乙個實體。乙個程序可以有多個執行緒。執行緒不能離開程序單獨存在,離開程序談執行緒是沒有意義的。多執行緒的相比多程序的優勢 建立子程序是拷貝父程序所有的資源進行併發處理,這樣需要更多的資源消耗,對硬體要求更...
Linux多執行緒基礎之執行緒基礎用法
多人砌牆的故事 加快任務完成可以通過加人的方法來實現。同樣,程式中可以通過加程序來實現,但是,多程序存在資源浪費的問題。而執行緒沒有資源浪費的問題。總結 執行緒就是 輕量級 的程序 執行緒與建立它的程序共享 段 資料段 執行緒有自己的棧 建立執行緒 int pthread create pthrea...
多執行緒基礎4 同步與通訊
1.什麼情況下需要同步 當多執行緒併發執行同一 時 希望某一段 執行的過程中cpu不要切換到其他執行緒工作.這時就需要同步.2.同步 塊 使用synchronized關鍵字加上乙個鎖物件來定義一段 這就叫同步 塊 多個同步 塊如果使用相同的鎖物件,那麼他們就是同步的 非靜態同步函式的鎖是 this ...