標準
標準/拡張機能 |
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() はエラーを示すエラー番号を戻します。