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

スレッドの方針およびスケジューリングパラメータの設定

個々のスレッドのスケジューリングポリシーおよびスケジューリングパラメータを変更するには、pthread_setschedparam(3C) を使用します。

pthread_setschedparam の構文

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, &param); 

サポートされている方針は、SCHED_FIFOSCHED_RR、および SCHED_OTHER です。

pthread_setschedparam の戻り値

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


EINVAL

説明:

設定しようとした属性の値が無効です。


EPERM

説明:

呼び出し元は、指定されたスレッドのスケジューリングパラメータまたはスケジューリングポリシーのいずれかを設定するための適切なアクセス権を持っていません。


ESRCH

説明:

tid で指定した値が既存のスレッドを表していません。