パスワードを忘れた? アカウント作成
451895 journal

Silphireの日記: pthread日記(6) - pthread_once() 6

日記 by Silphire

指定した関数が1度しか呼ばれない事を保証します。

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

init_routine()がまだ1度もどこからも呼び出されていない時のみ、init_routine()を実行します。

pthread_once()のメカニズムは、pthread_once_t型の変数once_controlを用いて、既に呼び出された関数であるかどうかを判断しています。2度目にinit_routine()が呼ばれた時に、以前と同じonce_controlが与えられると、init_routine()を実行しないという仕組みです。

pthread_once()を呼び出す前に、once_controlは、定数PTHREAD_ONCE_INITで初期化されている必要があります。PTHREAD_ONCE_INITは、pthread関係の他の物と共にpthread.hにて定義されています。

once_controlPTHREAD_ONCE_INIT()で初期化されていない、または動的な変数の時の動作は未定義です。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...