PTHREAD_ONCE(3)

名称
pthread_once - 動的なパッケージの初期化

ライブラリ
libc_r

書式
<pthread.h>

pthread_once_t once_control = PTHREAD_ONCE_INIT; int pthread_once(pthread_once_t *once_control, void (*init_routine)(void))

解説
プロセスの全てのスレッドによる最初の、与えられた once_control を伴っての pthread_once() の呼び出しは、 init_routine() を引数無しで呼び出します。 その後での同じ once_control を持つ pthread_once() の呼び出しは、 init_routine() を呼び出しません。 pthread_once() から戻る時点では、 init_routine() が完了していることが保証されています。 once_control パラメータは、関連付けられた初期化ルーチンが既に呼び出されたかどうかを 判断するために使用されます。

関数 pthread_once() は取り消しポイントではありません。 しかしながら、 init_routine() が取り消しポイントですので取り消され、 once_control は pthread_once() が一度も呼び出されていないかのような結果になります。

定数 PTHREAD_ONCE_INIT は、 <pthread.h> で定義されています。

once_control に自動保存期間がある、または PTHREAD_ONCE_INIT で初期化されていない場合には、 pthread_once() の動作は未定義です。

戻り値
問題がない場合は、 pthread_once() 関数は 0 を返します。 問題がある場合は、そのエラーを示すためにエラー番号が返されます。

エラー
ありません。

規格
pthread_once() は p1003.1-96 に適合しています。