資料定義標頭檔案
/usr/include/bits/pthreadtypes.h
pthread_attr_t
執行緒屬性。屬性物件主要包括是否繫結、是否分離、堆疊位址、堆疊大小、優先順序
屬性值不能直接設定,須使用相關函式進行操作
每個屬性都有屬性名,可以單獨通過
pthread_attr_set
屬性名這個函式來更改,通過
pthread_attr_get
屬性名函式獲得屬性。請看詳細
api說明。如:
屬性:detachstate
函式:
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
int pthread_attr_getdetachstate(const pthread_attr_t *attr, int* detachstate);
執行:
pthread_attr_setdetachstate(&attr, pthread_create_joinable);//
設定執行緒屬性為
joinable態
執行緒屬性名
detachstate
pthread_create_joinable
pthread_create_detached
預設:pthread_create_joinable
控制建立的執行緒是
joinable
態還是detached
態schedpolicy
sched_other (regular, non-realtime scheduling)
sched_rr(realtime,round-robin)
sched_fifo (realtime, first-in first-out)
預設:sched_other
優先順序類別
schedparam
預設:0
執行緒優先順序引數
如果schedpolicy
的值為schedpolicy
此屬性無關緊要
執行緒建立後可修改此屬性
inheritsched
pthread_explicit_sched
pthread_inherit_sched
預設:pthread_explicit_sched
說明此執行緒優先順序是否繼承于父執行緒還是通過上面兩個屬性確定
scope
pthread_scope_system
pthread_scope_process
預設:pthread_scope_system
設定執行緒繫結狀態
部分linux
不支援pthread_scope_ process
,需要檢視
man
1.6. #include
執行緒屬性初始化的函式
int pthread_attr_init(pthread_attr_t *attr);
返回:
如果成功
0, 失敗設定
e***
到error
pthread_attr_init
函式初始化執行緒屬性物件
attr
,填充所有屬性為預設值。這個函式必須在
pthread_create
函式之前呼叫,做為
pthread_create
函式的第
2個引數。屬性物件主要包括是否繫結、是否分離、堆疊位址、堆疊大小、優先順序。預設的屬性為非繫結、非分離、預設
1m 的堆疊、與父程序同樣級別的優先順序。
#include
pthread_attr_t attr;
pthread_t tid;
/*初始化屬性值,均設為預設值
*/pthread_attr_init(&attr);
pthread_attr_setscope(&attr, pthread_scope_system);
pthread_create(&tid, &attr, (void *) my_function, null);
設定執行緒繫結狀態的函式為
pthread_attr_setscope
,它有兩個引數,第乙個是指向屬性結構的指標,第二個是繫結型別,它有兩個取值:
pthread_scope_system
(繫結的)和
pthread_scope_process
(非繫結的)
#include
#include
pthread_attr_t attr;
pthread_t tid;
sched_param param;
int newprio=20;
pthread_attr_init(&attr);
pthread_attr_getschedparam(&attr, ¶m);
param.sched_priority
=newprio;
pthread_attr_setschedparam(&attr, ¶m);
pthread_create(&tid, &attr, (void *)myfunction, myarg);
設定執行緒的優先順序,它存放在結構
sched_param
中。用函式
pthread_attr_ getschedparam
和函式pthread_attr_setschedparam
進行存放,一般說來,我們總是先取優先順序,對取得的值修改後再存放回去。
Unix環境多執行緒程式設計 三
使用 posix 1003.1b 訊號量,有別於 systemv ipc,semctl,semop 的訊號量操作。訊號量是為執行緒間共享的資源計數。訊號量的基礎操作是 原子性的增加計數,和等待直到計數器非空並且原子性的減少計數。1 api 1.13 include 訊號量初始化 int sem in...
Unix 多執行緒
unix 執行緒 先來介紹執行緒的最基本操作 由淺入深 執行緒建立 pthread t threadid 執行緒的id儲存型別 型別為unsuigned long int int pthread create pthread t,執行緒的唯一標識id const pthread attr t 優先順...
unix環境高階程式設計 執行緒解析
1 通過為每種事件型別分配單獨的處理執行緒,可以簡化處理非同步事件的 2 多個程序必須使用作業系統提供的複雜機制才能實現記憶體和檔案描述符的共享,而多個執行緒自動地可以訪問相同的儲存位址空間和檔案描述符 3 互動的程式可以通過使用多執行緒來改善響應時間,多執行緒可以把程式中處理使用者輸入輸出的部分與...