Compartilhar via


<mutex>

Inclua o mutex padrão do cabeçalho> <para definir as classes mutex, recursive_mutex, timed_mutex, e recursive_timed_mutex; os modelos lock_guard e unique_lock; e dando suporte aos tipos e funções que definem regiões de código de mútuo- exclusão.

Este cabeçalho usa o tempo de execução (ConcRT) de simultaneidade de forma que você possa usar o junto com outros mecanismos de ConcRT. Para obter mais informações sobre como ConcRT, consulte Tempo de Execução de Simultaneidade.

#include <mutex>

Comentários

Dica

No código que é construído usando /clr ou /clr:pure, este cabeçalho é bloqueado.

As classes mutex e recursive_mutex são tipos de mutex. Um tipo de mutex tem um construtor padrão e um destruidor que não gerencie exceções. Esses objetos têm métodos que fornecem a exclusão mútua quando vários threads tenta bloquear o mesmo objeto. Especificamente, um tipo de mutex contém os métodos lock, try_lock, e unlock:

  • O método de lock bloqueia o thread de chamada até que o thread obtenha a propriedade do mutex. O valor de retorno será ignorado.

  • O método de try_lock tenta obter a propriedade do mutex sem bloqueio. O tipo de retorno é convertido em bool e é true se o método obtém a propriedade, mas é normalmente false.

  • O método de unlock libera a propriedade do mutex do thread de chamada.

Você pode usar tipos de mutex como argumentos de tipo para criar uma instância dos modelos lock_guard e unique_lock. Você pode usar objetos desses tipos como o argumento de Lock às funções de membro de espera no modelo condition_variable_any.

Um tipo programado do mutex satisfaz os requisitos para um tipo de mutex. Além disso, a tem métodos de try_lock_for e de try_lock_until que devem estar acessíveis usando um argumento e deve retornar um tipo que possa ser convertido na bool. Um tipo programado do mutex pode definir essas funções usando argumentos adicionais, contanto que os argumentos adicionais todos têm valores padrão.

  • O método de try_lock_for deve ser acessada usando o argumento, Rel_time, cujo tipo é uma instanciação de chrono::duration. O método tenta obter a propriedade do mutex, mas retorna no tempo que são designados por Rel_time, independentemente do êxito. O valor de retorno é convertido em true se o método obtém a propriedade; caso contrário, o converterá o valor de retorno a false.

  • O método de try_lock_until deve ser acessada usando o argumento, Abs_time, cujo tipo é uma instanciação de chrono::time_point. O método não tenta obter posteriormente a propriedade do mutex, mas retorna à hora que são designados por Abs_time, independentemente do êxito. O valor de retorno é convertido em true se o método obtém a propriedade; caso contrário, o converterá o valor de retorno a false.

Um tipo de mutex também é conhecido como um tipo bloqueáveis. Se o não fornece a função de membro try_lock, é um tipo bloqueáveis básico. Um tipo programado do mutex também é conhecido como um tipo bloqueáveis programado.

Classes

Nome

Descrição

Classe lock_guard

Representa um modelo que possa ser criado uma instância do para criar um objeto cujo destruidor desbloquee mutex.

Classe mutex (STL)

Representa um tipo mutex. Use objetos desse tipo para impor a exclusão mútua em um programa.

Classe recursive_mutex

Representa um tipo mutex. No constrast à classe de mutex , o comportamento de métodos de bloqueio de chamada para os objetos que estão bloqueados já é bem definido.

Classe recursive_timed_mutex

Representa um tipo de instância do programada mutex. Use objetos desse tipo para impor a exclusão mútua que tem bloqueio tempo limitado em um programa. Diferentemente dos objetos de tipo timed_mutex, o efeito dos métodos de bloqueio de chamada para objetos de recursive_timed_mutex é bem definido.

Classe timed_mutex

Representa um tipo de instância do programada mutex. Use objetos desse tipo para impor a exclusão mútua que tem bloqueio tempo limitado em um programa.

Classe unique_lock

Representa um modelo que possa ser criado uma instância do para criar os objetos que gerenciam o bloquear e desbloquear de mutex.

Funções

Nome

Descrição

Função call_once

Fornece um mecanismo para chamar um objeto acessível especificado exatamente uma vez durante a execução.

Função lock

Tentativas de bloqueio todos os argumentos sem deadlock.

Structs

Nome

Descrição

Estrutura adopt_lock_t

Representa um tipo que é usado para definir adopt_lock.

Estrutura defer_lock_t

Representa um tipo que define um objeto de defer_lock que é usada para selecionar um dos construtores sobrecarregados de unique_lock.

Estrutura once_flag

Representa struct usado com a função call_once do modelo para assegurar que o código de inicialização ser chamado apenas uma vez, mesmo na presença de vários threads de execução.

Estrutura try_to_lock_t

Representa struct que define um objeto de try_to_lock e é usado para selecionar um dos construtores sobrecarregados de unique_lock.

Variáveis

Nome

Descrição

Variável adopt_lock

Representa um objeto que pode ser passado para construtores para que lock_guard e unique_lock indica que o objeto do mutex que está sendo passado para o construtor também é bloqueada.

Variável defer_lock

Representa um objeto que pode ser passado para o construtor para unique_lock, para indicar que o construtor não deve bloquear o objeto do mutex que ele está sendo passado também.

Variável try_to_lock

Representa um objeto que pode ser passado para o construtor para que unique_lock indica que o construtor deve tentar desbloquear mutex que ele também está sendo passado sem bloqueio.

Consulte também

Outros recursos

Arquivos de cabeçalho da Biblioteca Padrão C++