std::scoped_lock<MutexTypes...>::scoped_lock
来自cppreference.com
< cpp | thread | scoped lock
并发支持库
|
|
std::scoped_lock
成员函数 | ||||
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++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
P0739R0 | C++17 | adopt_lock_t 参数在最后,妨碍类模板实参推导
|
移到最前 |