Namespaces
Variants

std::unique_lock<Mutex>:: operator=

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
unique_lock & operator = ( unique_lock && other ) noexcept ;
(C++11以降)

ムーブ代入演算子。以下と同等: unique_lock { std :: move ( other ) } . swap ( * this ) ; return * this ; .

other * this と同じオブジェクトである場合、効果はありません。それ以外の場合、呼び出し前に * this が関連付けられたミューテックスを持ち、その所有権を取得している場合、ミューテックスはアンロックされます。

目次

パラメータ

その他 - 状態を置き換える別の unique_lock

戻り値

* this

注記

再帰ミューテックスでは、代入前に * this other の両方が同じミューテックスを所有している可能性があります。この場合、代入後は * this がミューテックスを所有し、 other は所有しなくなります。

ムーブ代入は未定義動作を引き起こす可能性があります。例えば、 * this std::adopt_lock で構築された場合、呼び出しスレッドが関連するミューテックスの所有権を持っていないと、関連するミューテックスの所有権を適切に解放できません。

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2104 C++11 ムーブ代入演算子が noexcept であったが未定義動作を引き起こす可能性があった noexcept を削除
LWG 4172 C++11 LWG2104 により noexcept が削除された
unique_lock の自己ムーブ代入の仕様が誤っていた
noexcept を復元
何も行わない操作として再仕様化