recursive_timed_mutex — Klasa
Reprezentuje czasowy typ mutexu. Obiekty tego typu są używane do wymuszania wzajemnego wykluczania przy użyciu blokowania ograniczonego czasowo w programie. W przeciwieństwie do obiektów typu timed_mutex, efekt wywoływania metod blokowania obiektów recursive_timed_mutex
jest dobrze zdefiniowany.
Składnia
class recursive_timed_mutex;
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
recursive_timed_mutex | recursive_timed_mutex Tworzy obiekt, który nie jest zablokowany. |
~recursive_timed_mutex Destruktor | Zwalnia wszystkie zasoby, które są używane przez recursive_timed_mutex obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
lock | Blokuje wątek wywołujący do momentu uzyskania własności wątku mutex . |
try_lock | Próbuje uzyskać własność obiektu mutex bez blokowania. |
try_lock_for | Próbuje uzyskać własność mutex obiektu dla określonego przedziału czasu. |
try_lock_until | Próbuje uzyskać własność obiektu mutex do określonego czasu. |
Odblokować | Zwalnia własność obiektu mutex . |
Wymagania
Nagłówek:<mutex>
Przestrzeń nazw: std
lock
Blokuje wątek wywołujący do momentu uzyskania własności wątku mutex
.
void lock();
Uwagi
Jeśli wątek wywołujący jest już właścicielem mutex
metody , metoda zwraca natychmiast, a poprzednia blokada pozostaje w mocy.
konstruktor recursive_timed_mutex
recursive_timed_mutex
Tworzy obiekt, który nie jest zablokowany.
recursive_timed_mutex();
~recursive_timed_mutex Destruktor
Zwalnia wszystkie zasoby, które są używane przez recursive_timed_mutex
obiekt.
~recursive_timed_mutex();
Uwagi
Jeśli obiekt jest zablokowany po uruchomieniu destruktora, zachowanie jest niezdefiniowane.
try_lock
Próbuje uzyskać własność obiektu mutex
bez blokowania.
bool try_lock() noexcept;
Wartość zwracana
true
jeśli metoda pomyślnie uzyskała własność elementu mutex
lub, jeśli wątek wywołujący jest już właścicielem mutex
; w przeciwnym razie false
.
Uwagi
Jeśli wątek wywołujący jest już właścicielem mutex
, funkcja natychmiast zwraca true
wartość , a poprzednia blokada pozostaje w mocy.
try_lock_for
Próbuje uzyskać własność obiektu mutex
bez blokowania.
template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);
Parametry
Rel_time
Obiekt chrono::d uration określający maksymalny czas próby uzyskania własności obiektu mutex
.
Wartość zwracana
true
jeśli metoda pomyślnie uzyska własność elementu mutex
lub , jeśli wątek wywołujący jest już właścicielem mutex
; w przeciwnym razie false
.
Uwagi
Jeśli wątek wywołujący jest już właścicielem mutex
metody , metoda natychmiast zwraca true
wartość , a poprzednia blokada pozostaje w mocy.
try_lock_until
Próbuje uzyskać własność obiektu mutex
bez blokowania.
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);
Parametry
Abs_time
Punkt w czasie określający próg, po którym metoda nie próbuje już uzyskać własności obiektu mutex
.
Wartość zwracana
true
jeśli metoda pomyślnie uzyska własność elementu mutex
lub , jeśli wątek wywołujący jest już właścicielem mutex
; w przeciwnym razie false
.
Uwagi
Jeśli wątek wywołujący jest już właścicielem mutex
metody , metoda natychmiast zwraca true
wartość , a poprzednia blokada pozostaje w mocy.
Odblokować
Zwalnia własność obiektu mutex
.
void unlock();
Uwagi
Ta metoda zwalnia własność mutex
tylko po wywołaniu jej tak wiele razy, jak blokada, try_lock, try_lock_for i try_lock_until zostały pomyślnie wywołane w recursive_timed_mutex
obiekcie.
Jeśli wątek wywołujący nie jest właścicielem mutex
, zachowanie jest niezdefiniowane.