Поделиться через


Класс recursive_timed_mutex

Представляет тип мьютекса с ограничением по времени. Используйте объекты этого типа для принудительного взаимного исключения с помощью ограниченной по времени блокировки в программе. В отличие от объектов типа timed_mutex, эффект вызова методов блокировки для объектов recursive_timed_mutex четко определен.

Синтаксис

class recursive_timed_mutex;

Участники

Открытые конструкторы

Имя Описание
recursive_timed_mutex Создает объект recursive_timed_mutex, который не заблокирован.
Деструктор ~recursive_timed_mutex Освобождает все ресурсы, используемые объектом recursive_timed_mutex.

Открытые методы

Имя Описание
lock Блокирует вызывающий поток до тех пор, пока этот поток не получит права владельца объекта mutex.
try_lock Попытки получить права владельца объекта mutex без блокировки.
try_lock_for Пытается получить права владельца mutex на заданный интервал времени.
try_lock_until Пытается получить права владельца mutex до заданного времени.
unlock Освобождает права владения объектом mutex.

Требования

Заголовок:<mutex>

Пространство имен: std

lock

Блокирует вызывающий поток до тех пор, пока этот поток не получит права владельца объекта mutex.

void lock();

Замечания

Если вызывающий поток уже владеет mutex, метод немедленно возвращает значение и предыдущая блокировка остается в силе.

Конструктор recursive_timed_mutex

Создает объект recursive_timed_mutex, который не заблокирован.

recursive_timed_mutex();

Деструктор ~recursive_timed_mutex

Освобождает все ресурсы, используемые объектом recursive_timed_mutex.

~recursive_timed_mutex();

Замечания

Если при выполнении деструктора объект заблокирован, поведение не определено.

try_lock

Попытки получить права владельца объекта mutex без блокировки.

bool try_lock() noexcept;

Возвращаемое значение

true, если метод успешно получает права владельца mutex или если вызывающий поток уже владеет mutex; в противном случае — false.

Замечания

Если вызывающий поток уже владеет mutex, метод немедленно возвращает true и предыдущая блокировка остается в силе.

try_lock_for

Попытки получить права владельца объекта mutex без блокировки.

template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);

Параметры

Rel_time
Объект chrono::duration, который указывает максимальный интервал времени, в течение которого метод пытается получить права владельца объекта mutex.

Возвращаемое значение

true, если метод успешно получает права владельца mutex или если вызывающий поток уже владеет mutex; в противном случае — false.

Замечания

Если вызывающий поток уже владеет mutex, метод немедленно возвращает значение true и предыдущая блокировка остается в силе.

try_lock_until

Попытки получить права владельца объекта mutex без блокировки.

template <class Clock, class Duration>
bool try_lock_for(const chrono::time_point<Clock, Duration>& Abs_time);

bool try_lock_until(const xtime* Abs_time);

Параметры

Abs_time
Момент времени, определяющий порог, после которого метод больше не пытается получить права владельца объекта mutex.

Возвращаемое значение

true, если метод успешно получает права владельца mutex или если вызывающий поток уже владеет mutex; в противном случае — false.

Замечания

Если вызывающий поток уже владеет mutex, метод немедленно возвращает значение true и предыдущая блокировка остается в силе.

разблокировано

Освобождает права владения объектом mutex.

void unlock();

Замечания

Этот метод освобождает владение mutex только если он вызван столько раз, сколько lock, try_lock, try_lock_for и try_lock_until были успешно вызваны для объекта recursive_timed_mutex.

Если вызывающий поток не является владельцем mutex, поведение не определено.

См. также

Справочник по файлам заголовков
<mutex>