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

mutex の優先順位上限の設定

pthread_mutexattr_setprioceiling(3C) は、mutex の優先順位上限を設定します。

pthread_mutex_setprioceiling の構文

#include <pthread.h> 
int pthread_mutex_setprioceiling(pthread_mutex_t *restrict mutex, 
          int prioceiling, int *restrict old_ceiling);

pthread_mutex_setprioceiling()mutex の優先順位上限、つまり prioceiling を変更します。pthread_mutex_setprioceiling() は、mutex のロックが解除されている場合 mutex をロックするか、mutex を正常にロックできるようになるまでブロックして、mutex の優先順位上限を変更し、mutex を開放します。()mutex をロックするプロセスでは、優先順位保護プロトコルを守る必要はありません。

pthread_mutex_setprioceiling() が正常に終了すると、優先順位上限の以前の値が old_ceiling で返されます。pthread_mutex_setprioceiling() が失敗すると、mutex の優先順位上限は元のままになります。

pthread_mutex_setprioceiling の戻り値

pthread_mutex_setprioceiling() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。

次のいずれかの条件が検出されると、pthread_mutex_setprioceiling() は失敗し、対応する値を返します。


EINVAL

説明:

prioceiling で要求された優先順位が範囲外です。


EINVAL

説明:

mutex が、THREAD_PRIO_PROTECT の値を持つ protocol 属性で初期化されていませんでした。


EPERM

説明:

呼び出し元はこの操作を行うための権限を持っていません。