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 ;
(seit C++11)

Move-Zuweisungsoperator. Entspricht unique_lock { std :: move ( other ) } . swap ( * this ) ; return * this ; .

Wenn other dasselbe Objekt wie * this ist, gibt es keine Auswirkung. Andernfalls, falls vor dem Aufruf * this einen zugeordneten Mutex besitzt und dessen Eigentümerschaft erworben hat, wird der Mutex freigegeben.

Inhaltsverzeichnis

Parameter

other - ein weiterer unique_lock zum Ersetzen des Zustands

Rückgabewert

* this

Hinweise

Bei einem rekursiven Mutex ist es möglich, dass sowohl * this als auch other denselben Mutex vor der Zuweisung besitzen. In diesem Fall wird * this den Mutex nach der Zuweisung besitzen und other nicht.

Die Verschiebungszuweisung kann undefiniertes Verhalten verursachen. Zum Beispiel, wenn * this mit std::adopt_lock konstruiert wurde, aber der aufrufende Thread nicht im Besitz des zugehörigen Mutex ist, kann der Besitz des zugehörigen Mutex nicht ordnungsgemäß freigegeben werden.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2104 C++11 der Move-Zuweisungsoperator war noexcept konnte aber undefiniertes Verhalten haben noexcept entfernt
LWG 4172 C++11 LWG2104 entfernte noexcept
Selbst-Zuweisung von unique_lock war falsch spezifiziert
noexcept wiederhergestellt
als No-Op neu spezifiziert