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

Opérateur d'affectation par déplacement. Équivalent à unique_lock { std :: move ( other ) } . swap ( * this ) ; return * this ; .

Si other est le même objet que * this , il n'y a aucun effet. Sinon, si avant l'appel * this a un mutex associé et en a acquis la propriété, le mutex est déverrouillé.

Table des matières

Paramètres

autre - un autre unique_lock pour remplacer l'état

Valeur de retour

* this

Notes

Avec un mutex récursif, il est possible que * this et other possèdent le même mutex avant l'affectation. Dans ce cas, * this possédera le mutex après l'affectation et other ne le possédera pas.

L'assignation de déplacement peut potentiellement provoquer un comportement indéfini. Par exemple, lorsque * this est construit avec std::adopt_lock , mais que le thread appelant ne possède pas la propriété du mutex associé, la propriété du mutex associé ne peut pas être correctement libérée.

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 2104 C++11 l'opérateur de déplacement était noexcept mais pouvait avoir un comportement indéfini noexcept supprimé
LWG 4172 C++11 LWG2104 a supprimé noexcept
l'auto-affectation par déplacement de unique_lock était incorrectement spécifiée
noexcept restauré
respecificé comme no-op