public member function
<mutex>

std::unique_lock::operator=

move (1)
unique_lock& operator= (unique_lock&& x) noexcept;
copy [deleted] (2)
unique_lock& operator= (const unique_lock&) = delete;
move (1)
unique_lock& operator= (unique_lock&& x);
copy [deleted] (2)
unique_lock& operator= (const unique_lock&) = delete;
Move-assign unique_lock
x 中的 互斥量物件 及其 持有狀態 替換為當前物件管理的物件。

如果在呼叫前,物件 持有 其管理的 互斥量物件 的鎖,則在其被替換前會呼叫其 unlock 成員函式。

x 將處於 預設構造(不引用任何 互斥量物件)後的狀態。

unique_lock 物件不能被複制 (2)。

引數

x
另一個 unique_lock 物件。

返回值

*this

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// unique_lock::operator= example
#include <iostream>       // std::cout
#include <thread>         // std::thread
#include <mutex>          // std::mutex, std::unique_lock

std::mutex mtx;           // mutex for critical section

void print_fifty (char c) {
  std::unique_lock<std::mutex> lck;         // default-constructed
  lck = std::unique_lock<std::mutex>(mtx);  // move-assigned
  for (int i=0; i<50; ++i) { std::cout << c; }
  std::cout << '\n';
}

int main ()
{
  std::thread th1 (print_fifty,'*');
  std::thread th2 (print_fifty,'$');

  th1.join();
  th2.join();

  return 0;
}

可能的輸出(行順序可能不同,但字元絕不會混合)

**************************************************
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


資料競爭

物件和 x 都會被修改。
呼叫前物件管理的 互斥量物件 可能會被修改(在 解鎖 時,作為一個 原子操作,不會導致資料競爭)。
操作不會訪問 x 管理的 互斥量物件(僅會傳輸)。

異常安全

無異常保證: 絕不丟擲異常。
如果在呼叫前,物件 持有 其管理的 互斥量物件 的鎖,而該互斥量物件由於某種原因當前未被呼叫執行緒鎖定,則嘗試 解鎖 時會導致 未定義行為

否則,不丟擲任何異常(no-throw guarantee)。

另見