std::scoped_lock<MutexTypes...>:: scoped_lock
From cppreference.net
<
cpp
|
thread
|
scoped lock
C++
Concurrency support library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::scoped_lock
| Member functions | ||||
|
scoped_lock::scoped_lock
|
||||
|
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...
)
を呼び出す。
2)
ミューテックスの所有権を取得します
m...
ただし、いずれのミューテックスもロックしようとはしません。現在のスレッドが
m...
内の各オブジェクトに対して非共有ロック(すなわち
lock
、
try_lock
、
try_lock_for
または
try_lock_until
によって取得されたロック)を保持していない限り、動作は未定義です。
3)
コピーコンストラクタは削除されています。
m
が
scoped_lock
オブジェクトより先に破棄される場合、動作は未定義です。
パラメータ
| m | - | 所有権を取得するミューテックスの数 |
例外
1)
m.
lock
(
)
によってスローされる例外をスローします。
2)
例外を送出しない。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| P0739R0 | C++17 |
adopt_lock_t
パラメータが最後にあり、クラステンプレート引数推論を妨げていた
|
最初に移動 |