Provided by: manpages-ja-dev_0.5.0.0.20180315+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)