pthread_attr_setschedpolicy(3THR) は、スケジューリング方針を設定します。POSIX 規格ではスケジューリング方針の属性として、SCHED_FIFO (先入れ先出し)、SCHED_RR (ラウンドロビン)、SCHED_OTHER (実装で定義) を規定しています。
SCHED_FIFO
先入れ先出し。スケジューリングの競合範囲がシステムであるスレッド (PTHREAD_SCOPE_SYSTEM) は、呼び出しプロセスの実効ユーザー ID が 0 であれば、リアルタイム (RT) スケジューリングクラスに設定されます。これらのスレッドは、優先順位のより高いスレッドに割り込まれなければ、CPU を譲るかブロックされるまで実行を続けます。SCHED_FIFO は、スケジューリングの競合範囲がプロセスであるスレッド (PTHREAD_SCOPE_PROCESS) の場合、または呼び出しプロセスの実効ユーザー ID が 0 でない場合は、TS スケジューリングクラスに設定されます。
SCHED_RR
ラウンドロビン。スケジューリングの競合範囲がシステムであるスレッド (PTHREAD_SCOPE_SYSTEM) は、呼び出しプロセスの実効ユーザー ID が 0 であれば、リアルタイム (RT) スケジューリングクラスに設定されます。これらのスレッドは、優先順位のより高いスレッドに割り込まれなければ、CPU を譲るかブロックされるまで実行を続けます。 SCHED_RR は、スケジューリングの競合範囲がプロセスであるスレッド (PTHREAD_SCOPE_PROCESS) の場合、または呼び出しプロセスの実効ユーザー ID が 0 でない場合は、TS スケジューリングクラスに設定されます。
SCHED_FIFO と SCHED_RR は POSIX では任意とされており、リアルタイム結合スレッドについてのみサポートされています
スケジューリングの説明については、スケジューリングの節を参照してください。
プロトタイプ: int pthread_attr_setschedpolicy(pthread_attr_t *tattr, int policy); |
#include <pthread.h> pthread_attr_t tattr; int policy; int ret; /* スケジューリング方針を SCHED_OTHER に設定する */ ret = pthread_attr_setschedpolicy(&tattr, SCHED_OTHER); |
正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、次の値を戻します。