スレッドを生成する前に優先順位属性を設定できます。子スレッドは、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); |