最終更新日時:
が更新

履歴 編集

class
<mutex>

std::defer_lock(C++11)

namespace std {
  struct defer_lock_t { };
  constexpr defer_lock_t defer_lock { };
}

概要

defer_lock_t型とその値defer_lockは、遅延ロックのためのタグである。

lock()/unlock()の呼び出しをRAIIで自動化するunique_lockクラスのコンストラクタでlock()を呼び出させないために使用する。

#include <iostream>
#include <mutex>

int main()
{
  std::mutex mtx;
  {
    std::unique_lock<std::mutex> lk(mtx, std::defer_lock); // ここではlock()されない
    lk.lock(); // あとからロックする

    // ...共有リソースにアクセスする...

  } // unique_lockの破棄時にunlock()される
}

出力

バージョン

言語

  • C++11

処理系

  • Clang: ??
  • GCC:
  • GCC, C++11 mode: 4.7.0
  • ICC: ??
  • Visual C++: 11.0, 12.0, 14.0
    • 11.0, 12.0はconstexprが実装されていないため、代わりにdefer_lockにはconstが修飾されている。

参照