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
参数位于末尾,阻碍了类模板参数推导
|
移至首位 |