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

mutex 属性オブジェクトの初期化

pthread_mutexattr_init(3THR)

pthread_mutexattr_init(3THR) は、このオブジェクトに関連付けられた属性をデフォルト値に初期化します。各属性オブジェクトのための記憶領域は、実行時にスレッドによって割り当てられます。

この関数が呼び出されたときの pshared 属性のデフォルト値は PTHREAD_PROCESS_PRIVATE で、初期化された mutex を 1 つのプロセスの中だけで使用できるという意味です。


プロトタイプ:
int	pthread_mutexattr_init(pthread_mutexattr_t *mattr);

#include <pthread.h>


pthread_mutexattr_t mattr;
int ret;

/* 属性をデフォルト値に初期化する */
ret = pthread_mutexattr_init(&mattr);

mattr は不透明な型で、システムによって割り当てられた属性オブジェクトを含んでいます。mattr のスコープとして取り得る値は、PTHREAD_PROCESS_PRIVATE (デフォルト) と PTHREAD_PROCESS_SHARED です。

mutex 属性オブジェクトを再使用するには、pthread_mutexattr_destroy(3T) への呼び出しによって事前に削除しなければなりません。pthread_mutexattr_init() を呼び出すと、不透明なオブジェクトが割り当てられます。そのオブジェクトが削除されないと、結果的にメモリーリークを引き起こします。

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下のいずれかの条件が検出されると、この関数は失敗し、次の値を返します。


ENOMEM

メモリー不足のため、mutex 属性オブジェクトを初期化できません。