pthread_attr_setschedpolicy(3THR) は、スケジューリング方針を設定します。POSIX 規格の草稿ではスケジューリング方針の属性として、SCHED_FIFO (先入れ先出し)、SCHED_RR (ラウンドロビン)、SCHED_OTHER (実装で定義) を規定しています。
SCHED_FIFO
先入れ先出し。この方針でスケジュールしたスレッドは、優先順位の高いスレッドに割り込まれなければ、完了まで処理を進行します。スケジューリングの競合範囲がシステムであるスレッド (PTHREAD_SCOPE_SYSTEM) は、リアルタイム (RT) スケジューリングクラスに属し、呼び出しプロセスの実効ユーザ ID は 0 でなければいけません。スケジューリングの競合範囲がプロセス (PTHREAD_SCOPE_PROCESS) であるスレッド は、TS スケジューリングクラスに属します。
SCHED_RR
ラウンドロビン。この方針でスケジュールしたスレッドは、優先順位の高いスレッドに割り込まれなければ、システムによって定めれれた期間、処理を実行します。スケジューリングの競合範囲がシステムであるスレッド (PTHREAD_SCOPE_SYSTEM) は、リアルタイム (RT) スケジューリングクラスに属し、呼び出しプロセスの実効ユーザ ID は 0 でなければいけません。スケジューリングの競合範囲がプロセス (PTHREAD_SCOPE_PROCESS) であるスレッドの SCHED_RR は、TS スケジューリングクラスに属します。
SCHED_FIFO と SCHED_RR は POSIX では任意とされており、リアルタイム結合スレッドについてのみサポートされています
現在 pthread では、タイムシェアリングを示す Solaris の SCHED_OTHER のデフォルト値のみがサポートされています。スケジューリングの説明については、「スケジューリング」の節を参照してください。
プロトタイプ: 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 です。それ以外の戻り値はエラーが発生したことを示します。以下のいずれかの条件が検出されると、この関数は失敗し、対応する値を返します。