Spec-Zone.ru › C++

std::unique_lock<Mutex>::operator=

unique_lock& operator=( unique_lock&& other ) noexcept;
(начиная с C++11)

Оператор перемещающего присваивания. Эквивалентен unique_lock{std::move(other)}.swap(*this); return *this;.

Если other является тем же объектом, что и *this, эффект отсутствует. В противном случае, если до вызова *this связан с мьютексом и получил владение им, мьютекс разблокируется.

Параметры

other - другой 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 восстановлен
поведение уточнено как отсутствие действия

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/thread/unique_lock/operator%3D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API