std::scoped_lock<MutexTypes...>::scoped_lock
提供: cppreference.com
<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 |