Partilhar via


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.

Confira também

Referência de Arquivos de Cabeçalho
<mutex>