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() は失敗し、対応する値を返します。