pthread_mutexattr_init() - mutex 属性オブジェクトの初期化

標準

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

POSIX.4a
Single UNIX Specification、バージョン 3

両方

POSIX(ON)

形式

#define _OPEN_THREADS
#define _OPEN_SYS
#include <pthread.h>

int pthread_mutexattr_init(pthread_mutexattr_t *attr);
SUSV3:
#define _UNIX03_THREADS
#define _OPEN_SYS
#include <pthread.h>

int pthread_mutexattr_init(pthread_mutexattr_t *attr);

機能説明

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

有効な mutex 属性については、pthread_mutexattr_setkind_np() - mutex 属性オブジェクトの種類の設定を参照してください。

注: pthread_mutexattr_t オブジェクトを含むストレージを解放する前に、必ず pthread_mutexattr_destroy() を呼び出して、pthread_mutexattr_t オブジェクトを破棄してください。 ストレージを再利用する前に、pthread_mutexattr_t オブジェクトを破棄しなかった場合、結果は保障されません。

戻り値

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

正常に実行されなかった場合、pthread_mutexattr_init() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
ENOMEM
attr を初期化するにはメモリーが不十分です。

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

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

CELEBP44
⁄* CELEBP44 *⁄

#define _OPEN_THREADS
#define _OPEN_SYS       ⁄* Needed to identify __MUTEX_RECURSIVE *⁄
#include <pthread.h>
#include <stdio.h>

main() {
  pthread_mutexattr_t attr;
  pthread_mutex_t mutex;

  if (pthread_mutexattr_init(&attr) != 0) {
    perror("pthread_mutex_attr_init() error");
    exit(1);
  }

  if (pthread_mutexattr_setkind_np(&attr, __MUTEX_RECURSIVE) != 0) {
    perror("pthread_mutex_attr_setkind_np() error");
    exit(2);
  }

  if (pthread_mutex_init(&mutex, &attr) != 0) {
    perror("pthread_mutex_init() error");
    exit(3);
  }

  if (pthread_mutexattr_destroy(&attr) != 0) {
    perror("pthread_mutex_attr_destroy() error");
    exit(4);
  }
}

関連情報