2011-12-27 3 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

あなたののparam引数は(構造体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でスケジュール

プロセスは 範囲内 は静的優先度を有することができ、SCHED_FIFOまたはSCHED_RRでスケジューリング、静的 優先度0を処理して割り当てられなければならない1 〜99

+0

ありがとうございます私のクエリでは、SCHED_OTHERポリシーの最小優先度と最大優先度について、両方ともゼロになっています。 – gughan

+0

よろしくお願いします。 – gughan

+0

大歓迎です – pmod

関連する問題