Класс 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
, поведение не определено.