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

条件変数の属性の初期化

pthread_condattr_init(3T)

pthread_condattr_init() は、このオブジェクトに関連付けられた属性をデフォルト値に初期化します。各属性オブジェクトのための記憶領域は、実行時にスレッドシステムによって割り当てられます。この関数が呼び出されたときの pshared 属性のデフォルト値は PTHREAD_PROCESS_PRIVATE で、初期化された条件変数を 1 つのプロセスの中だけで使用できるという意味です。

プロトタイプ:
int	pthread_condattr_init(pthread_condattr_t *cattr);
#include pthread.h
pthread_condattr_t  cattr;
int ret;

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

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

条件変数属性を再使用するには、pthread_condattr_destroy(3T) によって事前に削除しなければなりません。pthread_condattr_init() 呼び出しは、不透明なオブジェクトへのポインタを戻します。そのオブジェクトが削除されないと、結果的にメモリーリークを引き起こします。

戻り値

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


ENOMEM

メモリーが足りなくて、スレッド属性オブジェクトを初期化できません。


EINVAL

cattr で指定された値が無効です。