Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Inclua o cabeçalho padrão <mutex> para definir as classes mutex, recursive_mutex, timed_mutex e recursive_timed_mutex; os modelos lock_guard e unique_lock; e o os tipos e as funções de suporte que definem as regiões de código de exclusão mútua.
Aviso
Do Visual Studio 2015 em diante, os tipos de sincronização da biblioteca padrão C++ têm como base as primitivas de sincronização do Windows e não usam mais ConcRT (exceto quando a plataforma de destino for Windows XP). Os tipos definidos em <mutex> não devem ser usados com as funções ou tipos ConcRT.
Requisitos
Cabeçalho: <mutex>
Namespace: std
Comentários
Observação
Em código compilado usando /clr, esse cabeçalho é bloqueado.
As classes mutex e recursive_mutex são tipos mutex. Um tipo mutex tem um construtor padrão e um destruidor que não lançam exceções. Esses objetos têm métodos que propiciam exclusão mútua quando vários threads tentam bloquear o mesmo objeto. Especificamente, um tipo mutex contém os métodos lock, try_lock e unlock:
O método
lockbloqueia o thread de chamada até que ele tenha obtido a propriedade do mutex. Seu valor retornado é ignorado.O método
try_locktenta obter a propriedade do mutex sem bloquear. O valor retornado poderá ser convertido paraboole serátruese o método obtiver propriedade, caso contrário seráfalse.O método
unlocklibera a propriedade do mutex do thread de chamada.
Você pode usar tipos mutex como argumentos de tipo para instanciar os modelos lock_guard e unique_lock. Você pode usar objetos desses tipos, como o argumento Lock para as funções membro de espera no modelo condition_variable_any.
Um tipo mutex programado satisfaz os requisitos para um tipo mutex. Além disso, ele tem os métodos try_lock_for e try_lock_until que devem ser chamados usando um argumento e devem retornar um tipo que pode ser convertido em bool. Um tipo de mutex programado pode definir essas funções usando argumentos adicionais, desde que esses argumentos adicionais tenham valores padrão.
O método
try_lock_fordeve ser chamado usando um argumento,Rel_time, cujo tipo é uma instanciação dechrono::duration. O método tenta obter a propriedade do mutex, mas retorna no tempo designado peloRel_time, independentemente do êxito. O valor retornado será convertido paratruese o método obtiver a propriedade; caso contrário, o valor retornado será convertido parafalse.O método
try_lock_untildeve ser chamado usando um argumento,Abs_time, cujo tipo é uma instanciação dechrono::time_point. O método tenta obter a propriedade do mutex, mas retorna no tempo designado peloAbs_time, independentemente do êxito. O valor retornado será convertido paratruese o método obtiver a propriedade; caso contrário, o valor retornado será convertido parafalse.
Um tipo mutex é também conhecido como um tipo bloqueável. Se ele não fornece a função membro try_lock, é de um tipo bloqueável básico. Um tipo mutex programado é conhecido como um tipo bloqueável programado. Um tipo de bloqueio cronometrado bloqueia por um período especificado ou até que um bloqueio no mutex seja adquirido.
Membros
Classes
| Nome | Descrição |
|---|---|
Classe lock_guard |
Representa um modelo que pode ser instanciado para criar um objeto cujo destruidor desbloqueia um mutex. |
Classe mutex (Biblioteca Padrão C++) |
Representa um tipo mutex. Use objetos desse tipo para impor a exclusão mútua dentro de um programa. |
Classe recursive_mutex |
Representa um tipo mutex. Em contraste com a classe mutex, o comportamento de chamadas para métodos de bloqueio para objetos que já estão bloqueados é bem definido. |
Classe recursive_timed_mutex |
Use objetos desse tipo para impor a exclusão mútua usando o bloqueio de tempo limite dentro de um programa. Ao contrário de timed_mutex, o efeito de chamar métodos de bloqueio para objetos recursive_timed_mutex é bem definido. |
Classe scoped_lock |
|
Classe timed_mutex |
Use objetos desse tipo para impor a exclusão mútua usando o bloqueio de tempo limite dentro de um programa. |
Classe unique_lock |
Representa um modelo que pode ser instanciado para criar objetos que gerenciam o bloqueio e o desbloqueio de um mutex. |
Funções
| Nome | Descrição |
|---|---|
call_once |
Fornece um mecanismo para chamar um objeto especificado que pode ser chamado apenas uma vez durante a execução. |
lock |
Tenta bloquear todos os argumentos sem deadlock. |
swap |
Tenta trocar os estados internos de dois objetos mutex, x e y. |
try_lock |
Tenta bloquear o objeto bloqueável. Retorna imediatamente. |
Estruturas
| Nome | Descrição |
|---|---|
Estrutura adopt_lock_t |
Representa um tipo que é usado para definir um adopt_lock. |
Estrutura defer_lock_t |
Representa um tipo que define um objeto defer_lock que é usado para selecionar um dos construtores sobrecarregados de unique_lock. |
Estrutura once_flag |
Representa um struct que é usado com a função de modelo call_once para garantir que o código de inicialização seja chamado apenas uma vez, mesmo na presença de vários threads de execução. |
Estrutura try_to_lock_t |
Representa um struct que define um objeto try_to_lock que é usado para selecionar um dos construtores sobrecarregados de unique_lock. |
Variáveis
| Nome | Descrição |
|---|---|
adopt_lock |
Representa um objeto que pode ser passado para construtores para lock_guard e unique_lock para indicar que o objeto mutex que também está sendo passado para o construtor está bloqueado. |
defer_lock |
Representa um objeto que pode ser passado para construtores para unique_lock para indicar que o construtor não deve bloquear o objeto mutex que também está sendo passado para ele. |
try_to_lock |
Representa um objeto que pode ser passado para construtores para unique_lock para indicar que o construtor deve tentar desbloquear o objeto mutex que também está sendo passado para ele sem bloqueio. |