スポンサーリンク

PTHREAD_ONCE(3) FreeBSD ライブラリ関数マニュアル PTHREAD_ONCE(3)

名称

pthread_once − 動的なパッケージの初期化

ライブラリ

Reentrant C Library (libc_r, −pthread)

書式

#include <pthread.h>

pthread_once_t once_control = PTHREAD_ONCE_INIT;

int

pthread_once(pthread_once_t *once_control, void (*init_routine)(void));

解説

プロセスの全てのスレッドによる最初の、与えられた once_control を伴っての pthread_once() の呼び出しは、 init_routine() を引数無しで呼び出します。そ の後での同じ once_control を持つ pthread_once() の呼び出しは、 init_routine() を呼び出しません。 pthread_once() から戻る時点では、 init_routine() が完了していることが保証されています。 once_control パラ メータは、関連付けられた初期化ルーチンが既に呼び出されたかどうかを判断す るために使用されます。

関数 pthread_once() は取り消しポイントではありません。しかしながら、 init_routine() が取り消しポイントですので取り消され、 once_controlpthread_once() が一度も呼び出されていないかのような結果になります。

定数 PTHREAD_ONCE_INIT は、 ⟨pthread.h⟩ で定義されています。

once_control に自動保存期間がある、または PTHREAD_ONCE_INIT で初期化され ていない場合には、 pthread_once() の動作は未定義です。

戻り値

問題がない場合は、 pthread_once() 関数は 0 を返します。問題がある場合は、 そのエラーを示すためにエラー番号が返されます。

エラー

ありません。

規格

pthread_once() は ISO/IEC 9945-1:1996 (‘‘POSIX.1’’) に適合しています。

FreeBSD 10.0 April 4, 1996 FreeBSD 10.0

スポンサーリンク