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

pthread_mutexattr_settype の構文

#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 に割り当てられます。