int pthread_attr_setschedpolicy(pthread_attr_t *tattr, int policy);
#include <pthread.h> pthread_attr_t tattr; int policy; int ret; /* set the scheduling policy to SCHED_OTHER */ ret = pthread_attr_setschedpolicy(&tattr, SCHED_OTHER);
SCHED_FIFO
先入れ先出しスレッドはリアルタイム (RT) スケジューリングクラスで実行され、呼び出しプロセスは特権付きである必要があります。このようなスレッドは、優先順位のより高いスレッドに割り込まれなければ、CPU を譲るかブロックされるまで実行を続けます。
SCHED_RR
ラウンドロビン。スケジューリングの競合範囲がシステムであるスレッド (PTHREAD_SCOPE_SYSTEM ) は、呼び出しプロセスの実効ユーザー ID が 0 であれば、リアルタイム (RT) スケジューリングクラスに設定されます。これらのスレッドは、優先順位のより高いスレッドに割り込まれなければ、または CPU を譲るかブロックされなければ、システムに定義された期間実行を続けます。スケジューリング競合範囲がプロセススコープ (PTHREAD_SCOPE_PROCESS) のスレッドには、SCHED_RR を使用します。これは、TS スケジューリングクラスに基づいています。また、これらのスレッドの呼び出しプロセスは、実効ユーザー ID が 0 以外です。
ラウンドロビンスレッドはリアルタイム (RT) スケジューリングクラスで実行され、呼び出しプロセスは特権付きである必要があります。ラウンドロビンスレッドは、優先順位のより高いスレッドに割り込まれなければ、または CPU を譲るかブロックされなければ、システムに定義された期間実行を続けます。その時点で、優先順位の等しい別のリアルタイムスレッドに強制的に CPU が譲られます。
SCHED_FIFO と SCHED_RR は POSIX 標準では任意とされており、リアルタイムスレッドについてのみサポートされています。
スケジューリングの詳細については、「スレッドのスケジューリング」を参照してください。