Posix多執行緒程式設計學習筆記(二) 執行緒屬性(2)

2021-04-19 06:37:11 字數 2840 閱讀 4364

四、執行緒的排程策略

函式

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[ ])

引用:http://blog.chinaunix.net/u/22935/showart_341888.html

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多執行緒程式設計學習筆記(二) 執行緒屬性(1)

一 執行緒屬性 執行緒具有屬性,用 pthread attr t 表示,在對該結構進行處理之前必須進行初始化,在使用後需要對其去除初始化。我們用 pthread attr init 函式對其初始化,用 pthread attr destroy 對其去除初始化。1 名稱 pthread attr in...