CLX C++ Libraries - call_once
Author: clown

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