標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.4a |
両方 | POSIX(ON) |
#define _OPEN_THREADS
#include <pthread.h>
int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *attr);
#define _UNIX03_THREADS
#include <pthread.h>
int pthread_cond_init(pthread_cond_t * __restrict__cond,
pthread_condattr_t * __restrict__attr);
attr によって参照された属性を使用して、cond によって 参照された条件変数を初期設定します。attr が NULL の場合には、デフォルト条件変数属性が使用されます。
正常に実行された場合、pthread_cond_init() は 0 を戻します。
Single UNIX Specification、バージョン 3 の特殊な動作: 正常に実行されなかった場合、pthread_cond_init() はエラーを示すエラー番号を戻します。
_OPEN_SYS_MUTEX_EXT フィーチャー・スイッチをオプションで組み込むことがで きます。 このフィーチャーが設定されると、相当に大きい pthread_cond_t オブジェ クトが定義されます。 このフィーチャーは、共用メモリー内の mutex と条件変数の管理に使用されます。 このフィーチャー・スイッチが共用メモリー内の条件変数の定義で設定された場合、 同じフィーチャー・スイッチを、条件変数に関連付けられた mutex の定義で設定しなけ ればなりません。
提供された拡張 pthread_cond_t オブジェクトが共用メモリー内にない場合、 そのオブジェクトは他のプロセスからアクセスできないので、 pthread_cond_init() はそのオブジェクトを非共用オブジェクトとして扱います。
_OPEN_SYS_MUTEX_EXT フィーチャー・スイッチが設定されている場合、 pthread_cond_wait() または pthread_cond_timedwait() が最初に出されたとき、 指定された mutex に共用条件変数が結合され、その条件変数と mutex の存続中、結合 されたままです。 その条件変数または mutex が破棄されるまで、他の mutex は、その指定された条 件変数に、またはその逆に関連付けることはできません。
pthread_cond_t オブジェクトは同じコンパイル単位内で定義および初期化する ようにお勧めします。 初期化される pthread_cond_t オブジェクトを移動させる場合、初期化コードは、 そのオブジェクトを定義するコードと同じ _OPEN_SYS_MUTEX_EXT フィーチャー設定値で コンパイルされたことを確認してください。
⁄* CELEBP19 *⁄
#define _OPEN_THREADS
#include <pthread.h>
#include <stdio.h>
main() {
pthread_cond_t cond;
if (pthread_cond_init(&cond, NULL) != 0) {
perror("pthread_cond_init() error");
exit(1);
}
if (pthread_cond_destroy(&cond) != 0) {
perror("pthread_cond_destroy() error");
exit(2);
}
}