Compartilhar via


Classe critical_section

Um mutex não reentrante que está explicitamente ciente do Runtime de Simultaneidade.

Sintaxe

class critical_section;

Membros

Typedefs públicos

Nome Descrição
native_handle_type Uma referência a um objeto critical_section.

Classes públicas

Nome Descrição
critical_section::scoped_lock Classe Um wrapper RAII seguro de exceção para um objeto critical_section.

Construtores públicos

Nome Descrição
critical_section Constrói uma nova seção crítica.
~critical_section Destructor Destrói uma seção crítica.

Métodos públicos

Nome Descrição
lock Adquire essa seção crítica.
native_handle Retorna um identificador nativo específico da plataforma, se houver.
try_lock Tenta adquirir o bloqueio sem bloquear.
try_lock_for Tenta adquirir o bloqueio sem bloquear um número específico de milissegundos.
unlock Desbloqueia a seção crítica.

Comentários

Para obter mais informações, confira Estrutura de dados de sincronização.

Hierarquia de herança

critical_section

Requisitos

Cabeçalho: concrt.h

Namespace: concurrency

critical_section

Constrói uma nova seção crítica.

critical_section();

~ critical_section

Destrói uma seção crítica.

~critical_section();

Comentários

Espera-se que o bloqueio deixe de ser mantido quando o destruidor for executado. Permitir que a seção crítica seja destruída com o bloqueio ainda mantido resulta em um comportamento indefinido.

lock

Adquire essa seção crítica.

void lock();

Comentários

Geralmente, é mais seguro utilizar a construção scoped_lock para adquirir e liberar um objeto critical_section em modo seguro de exceção.

Se o bloqueio já for mantido pelo contexto de chamada, uma exceção improper_lock será gerada.

native_handle

Retorna um identificador nativo específico da plataforma, se houver.

native_handle_type native_handle();

Valor de retorno

Uma referência à seção crítica.

Comentários

Um objeto critical_section não está associado a um identificador nativo específico da plataforma para o sistema operacional Windows. O método simplesmente retorna uma referência ao próprio objeto.

critical_section::scoped_lock Classe

Um wrapper RAII seguro de exceção para um objeto critical_section.

class scoped_lock;

scoped_lock::scoped_lock

Constrói um objeto scoped_lock e adquire o objeto critical_section passado no parâmetro _Critical_section. Se a seção crítica for mantida por outro thread, essa chamada será bloqueada.

explicit _CRTIMP scoped_lock(critical_section& _Critical_section);

Parâmetros

_Critical_section
A seção crítica a ser bloqueada.

scoped_lock::~scoped_lock

Destrói um objeto scoped_lock e libera a seção crítica fornecida em seu construtor.

~scoped_lock();

try_lock

Tenta adquirir o bloqueio sem bloquear.

bool try_lock();

Valor de retorno

Se o bloqueio foi adquirido, o valor true, caso contrário, o valor false.

try_lock_for

Tenta adquirir o bloqueio sem bloquear um número específico de milissegundos.

bool try_lock_for(unsigned int _Timeout);

Parâmetros

_Timeout
O número de milissegundos de espera antes do tempo limite.

Valor de retorno

Se o bloqueio foi adquirido, o valor true, caso contrário, o valor false.

desbloquear

Desbloqueia a seção crítica.

void unlock();

Confira também

Namespace de simultaneidade
Classe reader_writer_lock