std::unique_lock<Mutex>:: operator=
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
unique_lock::operator=
|
||||
| Locking | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
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 |