2009-09-01 11 views
2

明示的なスケジューリングがない場合、pthreadはカーネルによってランダムに実行されるようにスケジュールされます。pthreadスケジューリング方法?

pthreadライブラリで定義されているスケジューリング方法は、プライオリティなど同じですか?

答えて

4

スレッドの優先度は、プロセスの優先度に追加されるデルタとして指定されます。プロセスの優先順位を変更すると、そのプロセス内のすべてのスレッドの優先順位が変わります。スレッドのデフォルトの優先度はDEFAULT_PRIO_NPです。これはプロセスの優先度と変わりません。

これらのPthread APIは、SCHED_OTHERというスケジューリングポリシーのみをサポートしています。

  1. pthread_setschedparamの(SCHED_OTHERonly対応)
  2. pthread_getschedparamの
  3. は、pthread_attr_setschedparam
  4. pthread_attr_getschedparam

アンAS/400スレッドは、システム内ではなく、単に他のスレッドに対する他のスレッドに対するスケジューリングリソースについて競合します過程の中で。スケジューラは、いくつかの遅延コスト曲線(優先順位範囲)に基づく遅延コストスケジューラである。 Posix標準とSingle Unix仕様では、この実装をSCHED_OTHERのデフォルトから変更できないスケジューリングスコープとスケジューリング方針として参照しています。

2

多少の制御が可能です。同じ優先度のスレッドの場合、pthreads標準では、FIFO(スレッドがブロックまたは終了するまで実行されるスレッド)、ラウンドロビン(スレッドが一定時間実行されるスレッド)、またはデフォルトの「その他」スレッドの選択を指定します。標準で必要とされる唯一のものは "その他"であり、振る舞いは実装に依存するが、通常はFIFOとラウンドロビンのコンボである(例えば、スレッドがブロックされるまで実行されるか、終了するか、タイムスライスが先に使用されるかのどちらかが使用される)。

関連する問題