最終更新日時(UTC):
が更新

履歴 編集

class template
<mutex>

std::scoped_lock(C++17)

namespace std {
  template <class... MutexTypes>
  class scoped_lock;
}

概要

scoped_lockは、複数のミューテックスに対するロック取得と解放を、コンストラクタとデストラクタで確実に実行するためのクラスである。

lock_guardクラスは単一のミューテックスのみを扱うが、このクラスは複数のミューテックスを一括して管理する。

メンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ C++17
(destructor) デストラクタ C++17
operator=(const scoped_lock&) = delete 代入演算子 C++17

メンバ型

名前 説明 対応バージョン
mutex_type ミューテックス型。MutexTypes...が単一要素の場合のみ、その別名として定義される C++17

#include <iostream>
#include <mutex>

int main()
{
  std::mutex m1;
  std::timed_mutex m2;

  {
    // m1とm2のロックを取得
    std::scoped_lock lk{m1, m2};

    // m1のミューテックスで保護されたデータと、
    // m2のミューテックスで保護されたデータを操作・・・

  } // lkのデストラクタによって、m1とm2のロックを解放
}

出力

バージョン

言語

  • C++17

処理系

参照