名称
pthread_condattr_init(), pthread_condattr_destroy() ― 条件変数属性オブジェクトの初期化と消去
構文
#include <pthread.h>
int pthread_condattr_init(
pthread_condattr_t *attr
);
int pthread_condattr_destroy(
pthread_condattr_t *attr
);
パラメータ
| attr | | 初期化または消去する条件変数属性オブジェクトへのポインター。 |
説明
pthread_condattr_init() は、条件変数属性オブジェクト attr のすべての属性を、デフォルト値で初期化します。 属性オブジェクトは、条件変数を詳細に説明するものであり、条件変数初期化関数に渡されます。
条件変数属性オブジェクトを使用して条件変数を初期化すると、各属性の値によって、新しい条件変数の特性が決まります。
属性オブジェクトは、オブジェクト初期化の際の追加パラメータの役割を果たします。 pthread_cond_init() 関数の呼び出しでは、1 つの属性オブジェクトを何度でも使用することができます。
属性オブジェクトで条件変数を初期化すると、属性は条件変数の中にコピーされるのと同じことになります。
結果として、属性オブジェクトにどのような変更を加えても、前回初期化された条件変数には影響ありません。
特定の属性オブジェクトを必要とするすべての条件変数の初期化が済んでしまえば、属性オブジェクトはもう必要ありません。
条件変数属性とそのデフォルト値は、次のとおりです。
| プロセス共有 | | デフォルト値は PTHREAD_PROCESS_PRIVATE です。 |
初期化済みの条件変数属性オブジェクトを再度初期化すると、動作は不定になります。
pthread_condattr_destroy() は、条件変数属性オブジェクト attr を消去します。 消去された条件変数属性オブジェクトは実体が消去され、そのリソースは再生されます。
消去された後で attr を使用した場合、結果は不定です。 条件変数属性オブジェクトは、消去されても関数 pthread_condattr_init() で再び初期化できます。
すでに作成済みの条件変数は、作成時に使用した条件変数属性オブジェクトを消去しても影響を受けません。
戻り値
正常終了すると、 pthread_condattr_init() と pthread_condattr_destroy() は 0 を返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
以下の条件の場合、 pthread_condattr_init() 関数は、該当するエラー番号を返します。
| [ENOMEM] | | 条件変数属性オブジェクトの初期化に必要なメモリーが足りない場合。 |
| [EINVAL] | | attr が、有効な条件変数属性オブジェクトでない場合。 |
以下の条件の場合、 pthread_condattr_destroy() 関数は、該当するエラー番号を返します。
| [EINVAL] | | attr が、有効な条件変数属性オブジェクトでない場合。 |
著者
pthread_condattr_init() と pthread_condattr_destroy() は、IEEE
POSIX P1003.1c 規格から派生しました。
標準準拠
pthread_condattr_init(): POSIX 1003.1c.
pthread_condattr_destroy(): POSIX 1003.1c.