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();