- mutex[meta header]
- std[meta namespace]
- class[meta id-type]
- cpp11[meta cpp]
namespace std {
struct once_flag;
}
once_flag
は、一度だけ指定された処理を呼び出すcall_once()
関数で、呼び出し済みかどうかの状態フラグとして使用するクラスである。
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++11 |
~once_flag() = default |
デストラクタ | C++11 |
operator=(const once_flag&) = delete |
代入演算子 | C++11 |
#include <iostream>
#include <thread>
#include <mutex>
std::once_flag once;
void init()
{
// 初期化を行う...
std::cout << "initialize" << std::endl;
}
void thread_proc()
{
std::call_once(once, init);
}
int main()
{
std::thread t1(thread_proc);
std::thread t2(thread_proc);
std::thread t3(thread_proc);
t1.join();
t2.join();
t3.join();
}
- std::once_flag[color ff0000]
- std::call_once[link call_once.md]
initialize
- C++11
- Clang: ??
- GCC: 4.7.0 [mark verified]
- ICC: ??
- Visual C++: 2012 [mark verified], 2013 [mark verified], 2015 [mark verified]