CLX C++ Libraries
Home >> call_once

Declrations

typedef ... once_flag;

template <class Functor>
void call_once(once_flag& flag, Functor f);

Overview

call_once() は,特定の関数(または,関数オブジェクト)を一度だけ実行するための関数です. call_once() を使用する際には,まず,以下のように once_flag 型の変数を作成して初期化します.

clx::call_once flag = CLX_ONCE_INIT;

そして,初期化した once_flag 型の変数と実行したい関数(または,関数オブジェクト) を引数に指定します.call_once は,引数として関数ポインタの他に, 関数オブジェクトも指定することができますが,指定した関数オブジェクトが mutex や condition などのコピー不可なメンバ変数を持っていた場合は,うまく機能しません (コンパイルエラーになります).

Example

condition の Example を参照して下さい(example_condition.cpp).

Related Pages

  1. CLX C++ Libraries - thread
  2. CLX C++ Libraries - mutex
  3. CLX C++ Libraries - condition

References

  1. Life like a clown - マルチプラットフォームなスレッドクラス
  2. 或日:pthread_once on Win32