Объявление
unique_lock(mutex_type& m, std::try_to_lock_t);
Предусловия
Тип Mutex
, которым конкретизирован шаблон std::unique_lock
, должен удовлетворять требованиям концепции Lockable
.
Результат
Конструирует экземпляр std::unique_lock
, который ссылается на указанный мьютекс. Вызывает m.try_lock()
.
Исключения
Нет.
Постусловия
this->owns_lock()
возвращает результат вызова m.try_lock()
, this->mutex() == &m
.
STD::UNIQUE_LOCK
, КОНСТРУКТОР ПРОБНОЙ БЛОКИРОВКИ С ОТНОСИТЕЛЬНЫМ ТАЙМАУТОМ
Конструирует экземпляр std::unique_lock
, ассоциированный с указанным мьютексом, и пытается захватить этот мьютекс.
Объявление
template
unique_lock(
mutex_type& m,
std::chrono::duration const& relative_time);
Предусловия
Тип Mutex
, которым конкретизирован шаблон std::unique_lock
, должен удовлетворять требованиям концепции TimedLockable
.
Результат
Конструирует экземпляр std::unique_lock
, который ссылается на указанный мьютекс. Вызывает m.try_lock_for(relative_time)
.
Исключения
Нет.
Постусловия
this->owns_lock()
возвращает результат вызова m.try_lock_for()
, this->mutex() == &m
.
STD::UNIQUE_LOCK
, КОНСТРУКТОР ПРОБНОЙ БЛОКИРОВКИ С АБСОЛЮТНЫМ ТАЙМАУТОМ
Конструирует экземпляр std::unique_lock
, ассоциированный с указанным мьютексом, и пытается захватить этот мьютекс.
Объявление
template
unique_lock(
mutex_type& m,
std::chrono::time_point const& absolute_time);
Предусловия
Тип Mutex
, которым конкретизирован шаблон std::unique_lock
, должен удовлетворять требованиям концепции TimedLockable
.
Результат
Конструирует экземпляр std::unique_lock
, который ссылается на указанный мьютекс. Вызывает m.try_lock_until(relative_time)
.
Исключения
Нет.
Постусловия
this->owns_lock()
возвращает результат вызова m.try_lock_until()
, this->mutex() == &m
.
STD::UNIQUE_LOCK
, ПЕРЕМЕЩАЮЩИЙ КОНСТРУКТОР
Передает владение блокировкой от существующего объекта std::unique_lock
вновь сконструированному.
Объявление
unique_lock(unique_lock&& other) noexcept;
Результат
Конструирует экземпляр std::unique_lock
. Если объект other
владел блокировкой мьютекса до вызова конструктора, то теперь этой блокировкой владеет вновь сконструированный объект std::unique_lock
.
Постусловия
Для вновь сконструированного объекта std::unique_lock x
, x.mutex()
равно значению other.mutex()
до вызова конструктора, а x.owns_lock()
равно значению other.owns_lock()
до вызова конструктора. other.mutex() == NULL
, other.owns_lock() == false
.
Исключения
Нет.
Примечание. Объекты std::unique_lock
не удовлетворяют требованиям концепции CopyConstructible
, поэтому копирующего конструктора не существует, существует только этот перемещающий конструктор.
STD::UNIQUE_LOCK
, ПЕРЕМЕЩАЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Передает владение блокировкой от одного объекта std: :unique_ lock
другому.
Объявление
unique_lock& operator=(unique_lock&& other) noexcept;
Результат
Если this->owns_lock()
возвращала true
до вызова этого оператора, то вызывает this->unlock()
. Если объект other
владел блокировкой мьютекса до присваивания, то теперь этой блокировкой владеет *this
.
Постусловия
this.mutex()
равно значению other.mutex()
до присваивания, а this.owns_lock()
равно значению other.owns_lock()
до присваивания. other.mutex() == NULL
, other.owns_lock() == false
.
Исключения
Нет.
Примечание. Объекты std::unique_lock
не удовлетворяют требованиям концепции CopyAssignable
, поэтому копирующего оператора присваивания не существует, существует только этот перемещающий оператор присваивания.
STD::UNIQUE_LOCK
, ДЕСТРУКТОР
Уничтожает экземпляр std::unique_lock
и освобождает соответствующий мьютекс, если им владел уничтоженный экземпляр.
Объявление
~unique_lock();
Результат
Если this->owns_lock()
возвращает true
, то вызывает this->mutex()->unlock()
.
Исключения
Нет.
STD::UNIQUE_LOCK::SWAP
, ФУНКЦИЯ-ЧЛЕН
Обменивает владение ассоциированными блокировками мьютекса между двумя объектами std::unique_lock
.
Объявление
void swap(unique_lock& other) noexcept;
Результат
Если other
владел блокировкой мьютекса до вызова, то теперь этой блокировкой владеет *this
. Если *this
владел блокировкой мьютекса до вызова, то теперь этой блокировкой владеет other
.
Читать дальше