pthread_attr_getschedparam(3C) は、pthread_attr_setschedparam() で定義されたスケジューリングパラメータを返します。
int pthread_attr_getschedparam(pthread_attr_t *restrict tattr, const struct sched_param *restrict param);
#include <pthread.h> pthread_attr_t attr; struct sched_param param; int ret; /* get the existing scheduling param */ ret = pthread_attr_getschedparam (&tattr, ¶m);
スレッドを生成する前に優先順位属性を設定できます。子スレッドは、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; /* initialized with default attributes */ ret = pthread_attr_init (&tattr); /* safe to get existing scheduling param */ ret = pthread_attr_getschedparam (&tattr, ¶m); /* set the priority; others are unchanged */ param.sched_priority = newprio; /* setting the new scheduling param */ ret = pthread_attr_setschedparam (&tattr, ¶m); /* specify explicit scheduling */ ret = pthread_attr_setinheritsched (&tattr, PTHREAD_EXPLICIT_SCHED); /* with new priority specified */ ret = pthread_create (&tid, &tattr, func, arg);
pthread_attr_getschedparam() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、対応する値を返します。
EINVAL
説明:param の値が NULL か、tattr の値が無効です。