四、執行緒的排程策略
函式
pthread_attr_setschedpolicy
和pthread_attr_getschedpolicy
分別用來設定和得到執行緒的排程策略。
4.名稱::
pthread_attr_getschedpolicy
pthread_attr_setschedpolicy
功能:獲得
/設定執行緒的排程策略
標頭檔案:
#include
函式原形:
int pthread_attr_getschedpolicy(const pthread_attr_t *attr,int *policy);
int pthread_attr_setschedpolicy(pthread_attr_t *attr,int policy);
引數:attr
執行緒屬性變數
policy
排程策略
返回值:
若成功返回
0,若失敗返回-1。
這兩個函式具有兩個引數,第
1個引數是指向屬性物件的指標,第
2個引數是排程策略或指向排程策略的指標。排程策略可能的值是先進先出(
sched_fifo
)、輪轉法(
sched_rr),
或其它(
sched_other
)。sched_fifo
策略允許乙個執行緒執行直到有更高優先順序的執行緒準備好,或者直到它自願阻塞自己。在
sched_fifo
排程策略下,當有乙個執行緒準備好時,除非有平等或更高優先順序的執行緒已經在執行,否則它會很快開始執行。
sched_rr(輪循)
策略是基本相同的,不同之處在於:如果有乙個
sched_rr
策略的執行緒執行了超過乙個固定的時期
(時間片間隔
)沒有阻塞,而另外的
sched_rr
或schbd_fipo
策略的相同優先順序的執行緒準備好時,執行的執行緒將被搶占以便準備好的執行緒可以執行。
當有sched_fifo
或sched_rr
策賂的執行緒在乙個條件變數上等持或等持加鎖同乙個互斥量時,它們將以優先順序順序被喚醒。即,如果乙個低優先順序的
sched_fifo
執行緒和乙個高優先織的
sched_fifo
執行緒都在等待鎖相同的互斥且,則當互斥量被解鎖時,高優先順序執行緒將總是被首先解除阻塞。
五、執行緒的排程引數
函式
pthread_attr_getschedparam
和pthread_attr_setschedparam
分別用來設定和得到執行緒的排程引數。
5.名稱::
pthread_attr_getschedparam
pthread_attr_setschedparam
功能:獲得
/設定執行緒的排程引數
標頭檔案:
#include
函式原形:
int pthread_attr_getschedparam(const pthread_attr_t *attr,struct sched_param *param);
int pthread_attr_setschedparam(pthread_attr_t *attr,const struct sched_param *param);
引數:attr
執行緒屬性變數
param sched_param
結構返回值:
若成功返回
0,若失敗返回-1。
這兩個函式具有兩個引數,第
1個引數是指向屬性物件的指標,第
2個引數是
sched_param
結構或指向該結構的指標。結構
sched_param
在檔案/usr/include /bits/sched.h
中定義如下:
struct sched_param;結構
sched_param
的子成員
sched_priority
控制乙個優先權值,大的優先權值對應高的優先權。系統支援的最大和最小優先權值可以用
sched_get_priority_max
函式和sched_get_priority_min
函式分別得到。
注意:如果不是編寫實時程式,不建議修改執行緒的優先順序。因為,排程策略是一件非常複雜的事情,如果不正確使用會導致程式錯誤,從而導致死鎖等問題。如:在多執行緒應用程式中為執行緒設定不同的優先級別,有可能因為共享資源而導致優先順序倒置。
6.名稱::
sched_get_priority_max
sched_get_priority_min
功能:獲得系統支援的執行緒優先權的最大和最小值
標頭檔案:
#include
函式原形:
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
引數:policy
系統支援的執行緒優先權的最大和最小值
返回值:
若成功返回
0,若失敗返回-1。
下面是上面幾個函式的程式例子:
#include
#include
void *child_thread(void *arg)
int main(int argc,char *argv[ ])
Posix多執行緒程式設計學習筆記(二) 執行緒屬性(3)
六 執行緒的作用域 函式 pthread attr setscope 和pthread attr getscope 分別用來設定和得到執行緒的作用域,這兩個函式的定義如下 7 名稱 pthread attr setscope pthread attr getscope 功能 獲得 設定執行緒的作用域...
Posix多執行緒程式設計學習筆記(二) 執行緒屬性(2)
四 執行緒的排程策略 函式 pthread attr setschedpolicy 和pthread attr getschedpolicy 分別用來設定和得到執行緒的排程策略。4.名稱 pthread attr getschedpolicy pthread attr setschedpolicy ...
Posix多執行緒程式設計學習筆記(二) 執行緒屬性(2)
四 執行緒的排程策略 函式pthread attr setschedpolicy和pthread attr getschedpolicy分別用來設定和得到執行緒的排程策略。4.名稱 pthread attr getschedpolicy pthread attr setschedpolicy 功能 ...