pthread_mutexattr_settype(3C) は、mutex の型 (type) 属性を設定します。
#include <pthread.h> int pthread_mutexattr_settype(pthread_mutexattr_t *attr , int type);
型 (type) 属性のデフォルト値は PTHREAD_MUTEX_DEFAULT です。
型 (type) 引数は mutex の型を指定します。以下に、有効な mutex 型を示します。
PTHREAD_MUTEX_NORMAL
説明:この型の mutex はデッドロックを検出しません。スレッドが、この mutex をロック解除しないでもう一度ロックしようとすると、mutex はデッドロックします。別のスレッドによってロックされた mutex をロック解除しようとした場合、引き起こされる動作は未定義です。また、ロック解除された mutex をロック解除しようとした場合、引き起こされる動作は不定です。
PTHREAD_MUTEX_ERRORCHECK
説明:この型の mutex はエラーチェックを行います。スレッドがこの mutex をロック解除しないでもう一度ロックしようとすると、エラーを返します。あるスレッドがロックした mutex を別のスレッドがロック解除しようとすると、エラーが返されます。また、ロック解除された mutex をロック解除しようとするとエラーを返します。
PTHREAD_MUTEX_RECURSIVE
説明:スレッドがこの mutex をロック解除しないでもう一度ロックしようとすると、正常にロックできます。PTHREAD_MUTEX_NORMAL 型の mutex ではロックを繰り返すとデッドロックが発生しますが、この型の mutex では発生しません。複数回ロックされた mutex を別のスレッドが獲得するときには、その前に同じ回数ロック解除する必要があります。あるスレッドがロックした mutex を別のスレッドがロック解除しようとすると、エラーが返されます。また、ロック解除された mutex をロック解除しようとするとエラーを返します。
PTHREAD_MUTEX_DEFAULT
説明:この属性は、ほかの mutex 型に割り当てることができます。Solaris の実装では、この属性は PTHREAD_PROCESS_NORMAL に割り当てられます。
pthread_mutexattr_settype 関数は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。
EINVAL
説明:type または attr の値が無効です。