pthread_mutexattr_gettype() - mutex 属性オブジェクトのタイプの取得

標準

標準/拡張機能 C/C++ 依存項目

z/OS UNIX
Single UNIX Specification、バージョン 3

両方

POSIX(ON)
OS/390 V2R7

形式

#define _OPEN_THREADS
#include <pthread.h>

int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *type);
SUSV3:
#define _UNIX03_THREADS 
#include <pthread.h>
int pthread_mutexattr_gettype(const pthread_mutexattr_t * __restrict__attr,
                              int * __restrict__type);

機能説明

pthread_mutexattr_gettype() 関数は、mutex 属性オブジェクト attr から属性 type を取得します。

mutex 属性オブジェクトを使用すると、アプリケーションの mutex の特性を 管理することができます。これは、生成時に mutex に使用される一連の値を定義します。mutex 属性オブジェクトを確立することにより、mutex ごとに特性を定義することなく、同じ一連の特性をとるいくつかの mutex を作成することができます。

属性 type の値は次のとおりです。
PTHREAD_MUTEX_NORMAL
通常タイプの mutex はデッドロックを検出しません。つまり、スレッドがあらかじめこの mutex をアンロックすることなく再ロックしようとすると、デッドロックになります。mutex はスレッドに対してロック状態かアンロック状態のいずれかに なります。
PTHREAD_MUTEX_ERRORCHECK
エラー検査タイプの mutex はエラー検査を実行します。つまり、スレッドがこの mutex をアンロックしていないうちに再ロック しようとすると、エラーが戻されます。mutex はスレッドに対してロック状態かアンロック状態のいずれかに なります。スレッドが既にロックした mutex を再ロックしようとすると、エラーが戻されます。スレッドがアンロックされた mutex をアンロックしようとすると、エラーが戻されます。
PTHREAD_MUTEX_RECURSIVE
再帰タイプの mutex は、スレッドによる複数回のロックが可能です。つまり、スレッドがあらかじめこの mutex をアンロックすることなく再ロックしようとすると、その動作は実行されます。このタイプの mutex は、アンロック状態に戻るためには、ロックされた回数だけアンロックする必要があります。ロックされると、エラーが戻されます。
PTHREAD_MUTEX_DEFAULT
デフォルト・タイプの mutex は、デッドロックを検出しない 通常タイプの mutex にマップされます。つまり、スレッドがあらかじめこの mutex をアンロックすることなく再ロックしようとすると、デッドロックになります。mutex はスレッドに対してロック状態かアンロック状態のいずれかに なります。通常タイプの mutex はデフォルト・タイプの mutex です。
__MUTEX_NONRECURSIVE
非再帰的 mutex は、1 回だけロックされます。すなわち、mutex はスレッドに対してロック状態かアンロック状態のいずれかに なります。スレッドが既にロックした mutex をロックしようとすると、エラーが戻されます。
__MUTEX_RECURSIVE
再帰的 mutex は、同じスレッドで複数回ロックできます。mutex がロックされた回数のカウントは保守されます。pthread_mutex_unlock() が等しい回数実行されると、mutex はアンロックされます。
__MUTEX_NONRECURSIVE + __MUTEX_NODEBUG
非再帰的 mutex に追加属性 NODEBUG を提供できます。これは、この mutex に対する状態変更は、デバッグ・インターフェース (あったとしても) には報告されない ことを示しています。
__MUTEX_RECURSIVE + __MUTEX_NODEBUG
再帰的 mutex に追加属性、NODEBUG を提供できます。これは、この mutex に対する状態変更は、デバッグ・インターフェース (あったとしても) には報告されない ことを示しています。

戻り値

正常に実行された場合、pthread_mutexattr_gettype() は 0 の値を戻します。

正常に実行されなかった場合、pthread_mutexattr_gettype() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EINVAL
attr に指定された値は無効です。

Single UNIX Specification、バージョン 3 の特殊な動作

正常に実行されなかった場合、pthread_mutexattr_gettype() はエラーを示すエラー番号を戻します。

関連情報