pthread_once(3T) は、初めて呼び出されたときに初期化ルーチンを呼び出します。2 回目以降の pthread_once() 呼び出しは何の効果もありません。
プロトタイプ:
int pthread_once(pthread_once_t *once_control,
void (*init_routine)(void));
#include <pthread.h>
pthread_once_t once_control = PTHREAD_ONCE_INIT;
int ret;
ret = pthread_once(&once_control, init_routine);
|
once_control パラメタは、該当する初期化ルーチンがすでに呼び出されているかどうかを判定します。
正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると pthread_once() は失敗し、対応する値を返します。