std::scoped_lock<MutexTypes...>::scoped_lock
来自cppreference.com
< cpp | thread | 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 参数在最后,妨碍类模板实参推导
|
移到最前 |