pthread_attr_getschedparam(3THR) は、pthread_attr_setschedparam() によって設定されたスケジューリングパラメタを返します。
プロトタイプ: int pthread_attr_getschedparam(pthread_attr_t *tattr, const struct sched_param *param); #include <pthread.h> pthread_attr_t attr; struct sched_param param; int ret; /* 既存のスケジューリングパラメタを取得する */ ret = pthread_attr_getschedparam (&tattr, ¶m); |
正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、対応する値を戻します。
スレッドを生成する前に優先順位属性を設定できます。子スレッドは、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); |