スレッドを生成する前に優先順位属性を設定できます。子スレッドは、sched_param 構造体で指定した新しい優先順位で生成されます (この構造体には他のスケジューリング情報も含まれます)。
既存のパラメータを取得し、優先順位を変更してスレッドを作成してから、優先順位を再設定するという方法をお勧めします。
この方法を例 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, ¶m);/ * 優先順位を設定する。それ以外は変更なし */ param.sched_priority = newprio; /* 新しいスケジューリングパラメータを設定する */ ret = pthread_attr_setschedparam (&tattr, ¶m); /* 指定した新しい優先順位を使用する */ ret = pthread_create (&tid, &tattr, func, arg); |