マルチスレッドのプログラミング

スケジューリングポリシーの設定

スケジューリングポリシーを設定するには、pthread_attr_setschedpolicy(3C) を使用します。POSIX 規格ではスケジューリングポリシーの値として、SCHED_FIFO (先入れ先出し)、SCHED_RR (ラウンドロビン)、SCHED_OTHER (実装で定義) を規定しています。Solaris OS の場合、SCHED_OTHER スレッドは、従来のタイムシェアリング (TS) スケジューリングクラスで実行されます。

pthread_attr_setschedpolicy(3C) の構文

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_FIFOSCHED_RR は POSIX 標準では任意とされており、リアルタイムスレッドについてのみサポートされています。

スケジューリングの詳細については、「スレッドのスケジューリング」を参照してください。

pthread_attr_setschedpolicy の戻り値

pthread_attr_setschedpolicy() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、次の値を戻します。


EINVAL

説明:

tattr に設定しようとした値は無効です。


ENOTSUP

説明:

サポートされていない属性値を設定しようとしました。