個々のスレッドのスケジューリングポリシーおよびスケジューリングパラメータを変更するには、pthread_setschedparam(3C) を使用します。
int pthread_setschedparam(pthread_t tid, int policy, const struct sched_param *param);
#include <pthread.h> pthread_t tid; int ret; struct sched_param param; int priority; /* sched_priority will be the priority of the thread */ sched_param.sched_priority = priority; policy = SCHED_OTHER; /* scheduling parameters of target thread */ ret = pthread_setschedparam(tid, policy, ¶m);
サポートされている方針は、SCHED_FIFO、SCHED_RR、および SCHED_OTHER です。
pthread_setschedparam() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下のいずれかの条件が検出されると、この関数は失敗し、対応する値を返します。()
EINVAL
説明:設定しようとした属性の値が無効です。
EPERM
説明:呼び出し元は、指定されたスレッドのスケジューリングパラメータまたはスケジューリングポリシーのいずれかを設定するための適切なアクセス権を持っていません。
ESRCH
説明:tid で指定した値が既存のスレッドを表していません。