Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       pthread_once - 1 回きりの初期化

書式

       #include <pthread.h>

       pthread_once_t once_control = PTHREAD_ONCE_INIT;

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

説明

       pthread_once  の目的は、  初期化コードが高々 1 回しか実行されないようにすることである。 引数 once_control
       は静的変数または外部変数を指し示し、静的に PTHREAD_ONCE_INIT という値に初期化されていなければならない。

       最初に引数 once_control とともに pthread_once  が呼び出されたときには、  init_routine  を引数なしで呼び出
       し、  変数 once_control の値を変更して初期化が行なわれたことを記録する。 その後同じ引数 once_control とと
       もに pthread_once が呼び出されたときは何もしない。

返り値

       pthread_once は常に 0 を返す。

エラー

       なし。

著者

       Xavier Leroy <Xavier.Leroy@inria.fr>

       [訳注]   glibc-linuxthreads   の最新のドキュメントは   Texinfo   形式で提供されている。   以下は   glibc-
       linuxthreads-2.3.1 の Texinfo ファイルからの引用で、 「説明」への追記にあたるものである。

       スレッドが  init_routine を実行中に取り消しされた場合、 once_control はリセットされ、将来 pthread_once が
       呼び出されたとき初期化ルーチンは再び実行される。

       1 つまたは複数のスレッドが pthread_once の初期化ルーチンを実行中に プロセスが fork したときには、  子プロ
       セスではそれぞれの once_control 変数はリセットされたように見え、 子プロセスで pthread_once が呼び出された
       とき初期化ルーチンは実行される。

                                                  LinuxThreads                                   PTHREAD_ONCE(3)