Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 mutexmetody , 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 truewartość , 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 mutexmetody , metoda natychmiast zwraca truewartość , 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 mutexmetody , metoda natychmiast zwraca truewartość , 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.