std::unique_lock<Mutex>::operator=
来自 cppreference.com
< cpp | thread | unique lock
unique_lock& operator=( unique_lock&& other ); |
(自 C++11 起) | |
移动赋值运算符。使用移动语义将内容替换为 other 的内容。
如果在调用之前 *this 具有关联的互斥量并且已获取其所有权,则互斥量将被解锁。
内容 |
[编辑] 参数
other | - | 另一个 unique_lock ,用于替换状态 |
[编辑] 返回值
*this
[编辑] 异常
不抛出任何异常。
[编辑] 注释
对于递归互斥量,在赋值之前,*this 和 other 都可能拥有相同的互斥量。在这种情况下,*this 将在赋值后拥有互斥量,而 other 则不会。
[编辑] 缺陷报告
以下更改行为的缺陷报告已追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 2104 | C++11 | 移动赋值运算符为 noexcept,但它可能 在未定义行为的情况下抛出异常[1] |
它不是 noexcept |
- ↑ 例如,*this 使用 std::adopt_lock 构造,但调用线程没有关联互斥量的所有权。在这种情况下,*this 无法正确释放关联互斥量的所有权,并可能导致抛出异常。