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

mutex 属性のプロトコルの設定

pthread_mutexattr_setprotocol(3C) は、mutex 属性オブジェクトのプロトコル属性を設定します。

pthread_mutexattr_setprotocol の構文

#include <pthread.h> 
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, 
          int protocol);

attr は、先の pthread_mutexattr_init() の呼び出しによって作成された mutex 属性オブジェクトを指します。

protocol には、mutex 属性オブジェクトに適用されるプロトコルを指定します。

pthread.h に定義されている protocol の値は、次の値のうちのいずれか 1 つです。 PTHREAD_PRIO_NONEPTHREAD_PRIO_INHERIT、または PTHREAD_PRIO_PROTECT です。

PTHREAD_PRIO_INHERIT および PTHREAD_PRIO_PROTECT mutex 属性を使用できるのは、リアルタイム (RT) スケジューリングクラス SCHED_FIFO または SCHED_RR で実行されている特権付きプロセスだけです。

スレッドは、 PTHREAD_PRIO_INHERIT で初期化された mutex と PTHREAD_PRIO_PROTECT で初期化された mutex を複数同時に所有できます。この場合、スレッドは、これらのプロトコルのいずれかで獲得された最高の優先順位で実行します。

pthread_mutexattr_setprotocol の戻り値

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

次のどちらかの条件が検出されると、pthread_mutexattr_setprotocol() は失敗し、対応する値を返します。


EINVAL

説明:

attr または protocol に指定した値は無効です。


EPERM

説明:

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