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

Operador de asignación de movimiento. Equivalente a unique_lock { std :: move ( other ) } . swap ( * this ) ; return * this ; .

Si other es el mismo objeto que * this , no hay efecto. De lo contrario, si antes de la llamada * this tiene un mutex asociado y ha adquirido su propiedad, el mutex se desbloquea.

Contenidos

Parámetros

otro - otro unique_lock para reemplazar el estado con

Valor de retorno

* this

Notas

Con un mutex recursivo es posible que tanto * this como other posean el mismo mutex antes de la asignación. En este caso, * this poseerá el mutex después de la asignación y other no lo poseerá.

La asignación de movimiento posiblemente provoca comportamiento indefinido. Por ejemplo, cuando * this es construido con std::adopt_lock , pero el hilo que llama no tiene la propiedad del mutex asociado, la propiedad del mutex asociado no puede ser liberada correctamente.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2104 C++11 el operador de asignación de movimiento era noexcept pero podía tener comportamiento indefinido noexcept eliminado
LWG 4172 C++11 LWG2104 eliminó noexcept
la auto-asignación de movimiento de unique_lock estaba incorrectamente especificada
noexcept restaurado
reespecificado como no-operación