3


1

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

優先順位など、pthreadライブラリで同じスケジューリング方法が定義されていますか。

2 Answer


4


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

これらのPthread APIはSCHED_OTHERのスケジューリング方針のみをサポートします。

  1. pthread_setschedparam(SCHED_OTHERのみサポート)

  2. pthread_getschedparam

  3. pthread_attr_setschedparam

  4. pthread_attr_getschedparam

AS / 400スレッドは、プロセス内の他のスレッドに対してだけではなく、システム内の他のスレッドに対してスケジューリング・リソースを競合します。 スケジューラは、いくつかの遅延コスト曲線(優先順位範囲)に基づく遅延コストスケジューラです。 Posix規格とSingle Unix Specificationでは、これをスケジューリングスコープとスケジューリングポリシーと呼んでいますが、この実装ではデフォルトのSCHED_OTHERから変更することはできません。


2


多少調整できます。 同じ優先順位のスレッドの場合、pthread標準では、FIFO(スレッドがブロックまたは終了するまで実行される)、ラウンドロビン(スレッドが一定時間実行される)、またはデフォルトの "Other"のいずれかを選択します。 標準で要求される唯一のものは、その動作が実装依存である「その他」ですが、通常はFIFOとラウンドロビンの組み合わせです(例えば、スレッドがブロック、終了、またはタイムスライスが先に行われるまで使い切られるまで実行されます)。