名前空間
変種

std::scoped_lock<MutexTypes...>::scoped_lock

提供: cppreference.com
 
 
スレッドサポートライブラリ
スレッド
(C++11)
(C++20)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
相互排他
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
フューチャー
(C++11)
(C++11)
(C++11)
(C++11)
 
 
<tbody> </tbody>
explicit scoped_lock( MutexTypes&... m );
(1) (C++17以上)
scoped_lock( std::adopt_lock_t, MutexTypes&... m );
(2) (C++17以上)
scoped_lock( const scoped_lock& ) = delete;
(3) (C++17以上)

指定されたミューテックス m... の所有権を取得します。

1) sizeof...(MutexTypes) == 0 であれば、何もしません。 そうでなく、 sizeof...(MutexTypes) == 1 であれば、実質的に m.lock() を呼びます。 そうでなければ、実質的に std::lock(m...) を呼びます。 MutexTypes のいずれかが再帰ミューテックスでなく、現在のスレッドが m... 内の対応する引数をすでに所有している場合、動作は未定義です。
2) ミューテックス m... の所有権を、ロックを試みずに、取得します。 現在のスレッドが m... 内のミューテックスをすべて所有していなければ、動作は未定義です。
3) コピーコンストラクタは削除されています。

scoped_lock オブジェクトが破棄される前に m が破棄された場合、動作は未定義です。

引数

m - 所有権を取得するミューテックス

例外

1) m.lock() によって投げられるあらゆる例外を投げます。
2) 何も投げません。

欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
P0739R0 C++17 adopt_lock_t parameter was last, impeding class template argument deduction moved to first