pthread_once - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
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"
が呼び出されたとき初期化ルーチンは実行される。