Compartilhar via


<mutex>

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

Este cabeçalho usa o tempo de execução (ConcRT) de simultaneidade para que você possa usar o em conjunto com outros mecanismos de ConcRT.Para obter mais informações sobre ConcRT, consulte Tempo de execução de concorrência.

#include <mutex>

Comentários

ObservaçãoObservação

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

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

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

  • O método de try_lock tentar obter a propriedade de mutex sem bloqueio.Seu tipo de retorno é conversível a bool e é true se o método obtém a propriedade, mas é de outra forma false.

  • O método de unlock libera a propriedade mutex do segmento 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 de Lock funções de membro de espera no modelo condition_variable_any.

Um tipo programado mutex satisfaz os requisitos para um tipo mutex.Além disso, possui os métodos de try_lock_for e de try_lock_until que devem ser acessíveis usando um argumento e deve retornar um tipo que seja conversível a bool.Um tipo programado mutex pode definir essas funções usando argumentos adicionais, desde que todos os argumentos extras têm valores padrão.

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

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

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

Hh921467.collapse_all(pt-br,VS.110).gifClasses

Nome

Descrição

Classe lock_guard

Representa um modelo que pode ser instanciado para criar um objeto cujo destrutor desbloquee mutex.

mutex Class (STL)

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

Classe recursive_mutex

Representa um tipo mutex.Constrast na classe de mutex , o comportamento de métodos de bloqueio de chamada para objetos que são bloqueados já é bem definido.

Classe recursive_timed_mutex

Representa um tipo programado mutex.Use objetos desse tipo para aplicar a exclusão mútua que tem bloqueio custoso limitado em um programa.Ao contrário dos objetos do tipo timed_mutex, o efeito de métodos de bloqueio de chamada para objetos de recursive_timed_mutex é bem definido.

Classe timed_mutex

Representa um tipo programado mutex.Use objetos desse tipo para aplicar a exclusão mútua que tem bloqueio custoso limitado em um programa.

Classe unique_lock

Representa um modelo que pode ser instanciado para criar objetos que gerenciam o bloqueio e desbloquear de mutex.

Hh921467.collapse_all(pt-br,VS.110).gifFunçõ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.

lock Funções

Tenta bloquear de todos os argumentos sem bloqueio completa.

Hh921467.collapse_all(pt-br,VS.110).gifEstruturas

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 é usado para selecionar um dos construtores sobrecarregados de unique_lock.

Estrutura once_flag

Representa struct que é usado com a função call_once de modelo para garantir que o código de inicialização ser chamado somente 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.

Hh921467.collapse_all(pt-br,VS.110).gifAs variáveis

Nome

Descrição

adopt_lock variável

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

defer_lock variável

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

try_to_lock variável

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

Consulte também

Outros recursos

Arquivos de cabeçalho