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

指定の優先順位をもつスレッドを生成する

スレッドを生成する前に優先順位属性を設定できます。子スレッドは、sched_param 構造体で指定した新しい優先順位で生成されます (この構造体には他のスケジューリング情報も含まれます)。

既存のパラメータを取得し、優先順位を変更してスレッドを作成してから、優先順位を再設定するという方法をお勧めします。

この方法を例 3–2 に示します。


例 3–2 優先順位を設定したスレッドの生成


#include <pthread.h>
#include <sched.h>

pthread_attr_t tattr;pthread_t tid;int ret;int newprio = 20;
sched_param param;

/* デフォルト属性で初期化する */
ret = pthread_attr_init (&tattr);

/* 既存のスケジューリングパラメータを取得する */
ret = pthread_attr_getschedparam (&tattr, &param);/

* 優先順位を設定する。それ以外は変更なし */
param.sched_priority = newprio;

/* 新しいスケジューリングパラメータを設定する */
ret = pthread_attr_setschedparam (&tattr, &param);

/* 指定した新しい優先順位を使用する */
ret = pthread_create (&tid, &tattr, func, arg);