Skip to content

Latest commit

 

History

History
76 lines (58 loc) · 1.51 KB

once_flag.md

File metadata and controls

76 lines (58 loc) · 1.51 KB

once_flag

  • 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]

参照