名稱空間
變體
操作

std::unique_lock<Mutex>::operator=

來自 cppreference.com
< cpp‎ | thread‎ | unique lock
 
 
併發支援庫
執行緒
(C++11)
(C++20)
this_thread 名稱空間
(C++11)
(C++11)
(C++11)
協同取消
互斥
(C++11)
通用鎖管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
條件變數
(C++11)
訊號量
門閂和屏障
(C++20)
(C++20)
期值
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
危險指標
原子型別
(C++11)
(C++20)
原子型別的初始化
(C++11)(C++20 中已棄用)
(C++11)(C++20 中已棄用)
記憶體排序
(C++11)(C++26 中已棄用)
原子操作的自由函式
原子標誌的自由函式
 
 
unique_lock& operator=( unique_lock&& other ) noexcept;
(C++11 起)

移動賦值運算子。等價於 unique_lock{std::move(other)}.swap(*this); return *this;

如果 other*this 是同一個物件,則沒有效果。否則,如果在呼叫之前 *this 擁有關聯的互斥體並已獲得其所有權,則互斥體將被解鎖。

目錄

[編輯] 引數

其他 - 另一個 unique_lock,用於替換狀態

[編輯] 返回值

*this

[編輯] 注意

對於遞迴互斥體,在賦值之前 *thisother 都可能擁有相同的互斥體。在這種情況下,賦值後 *this 將擁有互斥體,而 other 將不擁有。

移動賦值可能會導致未定義行為。例如,當 *thisstd::adopt_lock 構造時,但呼叫執行緒不擁有關聯的互斥體,則關聯互斥體的所有權無法正確釋放。

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2104 C++11 移動賦值運算子是 noexcept 但可能存在未定義行為 移除 noexcept
LWG 4172 C++11 LWG2104 移除了 noexcept
unique_lock 的自移動賦值被錯誤指定
恢復 noexcept
重新指定為無操作