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).