Classe recursive_timed_mutex
Representa um tipo mutex programado. Objetos desse tipo são usados para impor a exclusão mútua usando o tempo limite de bloqueio dentro de um programa. Ao contrário de objetos do tipo timed_mutex, o efeito de chamar métodos de bloqueio para objetos recursive_timed_mutex
é bem definido.
Sintaxe
class recursive_timed_mutex;
Membros
Construtores públicos
Nome | Descrição |
---|---|
recursive_timed_mutex | Constrói um objeto recursive_timed_mutex que não está bloqueado. |
Destruidor ~recursive_timed_mutex | Libera todos os recursos usados pelo objeto recursive_timed_mutex . |
Métodos públicos
Nome | Descrição |
---|---|
lock | Bloqueia o thread de chamada até que ele tenha obtido a propriedade do mutex . |
try_lock | Tenta obter a propriedade do mutex sem o bloqueio. |
try_lock_for | Tenta obter a propriedade do mutex por um intervalo de tempo especificado. |
try_lock_until | Tenta obter a propriedade do mutex até um tempo especificado. |
unlock | Libera a propriedade do mutex . |
Requisitos
Cabeçalho:<mutex>
Namespace: std
lock
Bloqueia o thread de chamada até que ele tenha obtido a propriedade do mutex
.
void lock();
Comentários
Se o thread de chamada já possuir o mutex
, o método retornará imediatamente e o bloqueio anterior permanece em vigor.
Construtor recursive_timed_mutex
Constrói um objeto recursive_timed_mutex
que não está bloqueado.
recursive_timed_mutex();
Destruidor ~recursive_timed_mutex
Libera todos os recursos usados pelo objeto recursive_timed_mutex
.
~recursive_timed_mutex();
Comentários
Se o objeto estiver bloqueado quando o destruidor for executado, o comportamento será indefinido.
try_lock
Tenta obter a propriedade do mutex
sem o bloqueio.
bool try_lock() noexcept;
Valor de retorno
true
se o método obtiver a propriedade do mutex
com êxito ou se o thread de chamada já possui o mutex
; caso contrário, false
.
Comentários
Se o thread de chamada já possui o mutex
, a função retorna true
imediatamente e o bloqueio anterior permanece em vigor.
try_lock_for
Tenta obter a propriedade do mutex
sem o bloqueio.
template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);
Parâmetros
Rel_time
Um objeto chrono::duration que especifica o tempo máximo que o método tenta obter a propriedade do mutex
.
Valor de retorno
true
se o método obtiver a propriedade do mutex
com êxito ou se o thread de chamada já possui o mutex
; caso contrário, false
.
Comentários
Se o thread de chamada já possui o mutex
, o método retornará true
imediatamente e o bloqueio anterior permanece em vigor.
try_lock_until
Tenta obter a propriedade do mutex
sem o bloqueio.
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);
Parâmetros
Abs_time
Um ponto no tempo que especifica o limite após o qual o método não tenta mais obter a propriedade do mutex
.
Valor de retorno
true
se o método obtiver a propriedade do mutex
com êxito ou se o thread de chamada já possui o mutex
; caso contrário, false
.
Comentários
Se o thread de chamada já possui o mutex
, o método retornará true
imediatamente e o bloqueio anterior permanece em vigor.
desbloquear
Libera a propriedade do mutex
.
void unlock();
Comentários
Esse método libera a propriedade do mutex
somente depois que ele é chamado tantas vezes quanto lock, try_lock, try_lock_for e try_lock_until foram chamados com êxito no objeto recursive_timed_mutex
.
Se o thread de chamada não for o proprietário do mutex
, o comportamento será indefinido.