2011-12-27 115 views
0

任何人都可以幫助我如何更改線程優先級或線程策略?我從主線程創建一個子線程,當我嘗試更改線程優先級或線程schedpolicy時,使用pthread_setschedprio(pthread_self(),2);pthread_setschedparam(pthread_self(),SCHED_OTHER,&param);它顯示錯誤EINVAL無效參數。請解釋SCHED_OTHER政策的事情? 這裏struct sched_pa​​ram param;POSIX線程pthread_setschedparam

回答

2

目前尚不清楚參數包含你的參數(這是結構sched_pa​​ram *類型的並具有sched_priority場 - 這樣的話你可以一次設置策略和優先級)。最可能的是它含有不支持的輸入/輸出範圍值的 - 或者垃圾,如果你忘記的東西一樣,將其初始化:

struct sched_param param; 
param.sched_priority = 2; 

順便說一句,對於給定的調度策略有效的優先事項是通過返回的範圍內sched_get_priority_max(int policy)sched_get_priority_min(int policy) - 可能值得檢查。

更新

this

調度與SCHED_OTHER進程必須分配靜態 優先級0,流程 SCHED_FIFO或SCHED_RR下調度可具有靜態優先級在 範圍爲1到99

+0

非常感謝你的嘗試對於我的查詢,關於SCHED_OTHER策略的最小和最大優先級,我都得到零。 – gughan 2011-12-27 11:40:07

+0

ya謝謝你,我很喜歡它.... – gughan 2011-12-28 04:09:46

+0

不客氣 – pmod 2011-12-28 05:23:58