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_controlがPTHREAD_ONCE_INIT()で初期化されていない、または動的な変数の時の動作は未定義です。
once_controll (スコア:1)
Re:once_controll (スコア:1)
ちょっと不思議に (was: once_controll) (スコア:1)
ちょっと不思議にかみ合ってない感じ。
yhさんはtypoを指摘されてただけだと思います。で、その意図は伝わっているように見えます。
でも、「倣って」とおっしゃっている割に参考ページ [opengroup.org]ではonce_control("l"は一つ)で統一されています。
一方、Silphireさんの日記 [srad.jp]では、統一されてなくて、once_controlとonce_controllが混在しているような気がします。
うーむ、Silphireさんの日記 [srad.jp]を見て慌てて直したか?>opengroup.org [opengroup.org] (笑)
# (-1: 饒舌なもの)
--
Regards, Regards (Slashdot.jp 無粋部)
Re:ちょっと不思議に (was: once_controll) (スコア:1)
今回はroutienの時のように、全ての単語が間違っているわけではなくて、2つだけ綴りを間違えていました。その為、見落としてしまったようです。
Re:once_controll (スコア:1)
どうもすみません。
Re:once_controll (スコア:1)