マルチスレッドのプログラミング

スレッドの初期化

pthread_once(3T)

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


EINVAL

once_control または init_routine が NULL です。