Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um mutex não reentrante que está explicitamente ciente do Concurrency Runtime.
Sintaxe
class critical_section;
Membros
Definições de Tipos Públicas
| Nome | Description |
|---|---|
native_handle_type |
Uma referência a um objeto critical_section. |
Aulas Públicas
| Nome | Description |
|---|---|
| critical_section::scoped_lock Classe | Um wrapper RAII seguro para exceções para um critical_section objeto. |
Construtores Públicos
| Nome | Description |
|---|---|
| seção_crítica | Constrói uma nova secção crítica. |
| ~critical_section Destructor | Destrói uma secção crítica. |
Métodos Públicos
| Nome | Description |
|---|---|
| bloqueio | Adquira esta secção crítica. |
| native_handle | Devolve um handle nativo específico da plataforma, se existir. |
| try_lock | Tenta apanhar o cadeado sem bloquear. |
| try_lock_for | Tenta adquirir o bloqueio sem bloquear durante um número específico de milissegundos. |
| desbloquear | Desbloqueia a secção crítica. |
Observações
Para obter mais informações, consulte Estruturas de dados de sincronização.
Hierarquia de herança
critical_section
Requerimentos
Cabeçalho: concrt.h
Namespace: simultaneidade
secção crítica
Constrói uma nova secção crítica.
critical_section();
~critical_section
Destrói uma secção crítica.
~critical_section();
Observações
Espera-se que o bloqueio já não seja mantido quando o destruidor está em funcionamento. Permitir que a secção crítica se destrua com o bloqueio ainda mantido resulta num comportamento indefinido.
bloquear
Adquira esta secção crítica.
void lock();
Observações
É frequentemente mais seguro utilizar a construção scoped_lock para adquirir e libertar um critical_section objeto de forma segura para exceções.
Se o bloqueio já estiver detido pelo contexto de chamada, será lançada uma exceção improper_lock .
identificador_nativo
Devolve um handle nativo específico da plataforma, se existir.
native_handle_type native_handle();
Valor de retorno
Uma referência à secção crítica.
Observações
Um critical_section objeto não está associado a um handle nativo específico da plataforma para o sistema operativo Windows. O método simplesmente devolve uma referência ao próprio objeto.
critical_section::scoped_lock Turma
Um RAII wrapper seguro para exceções para um objeto critical_section.
class scoped_lock;
scoped_lock::scoped_lock
Constrói um scoped_lock objeto e adquire o critical_section objeto passado no _Critical_section parâmetro. Se a seção crítica for mantida por outra thread, esta chamada será bloqueada.
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
Parâmetros
_Secção_crítica
A secção crítica a bloquear.
scoped_lock::~scoped_lock
Destrói um objeto scoped_lock e liberta a secção crítica especificada no seu construtor.
~scoped_lock();
try_lock
Tenta apanhar o cadeado sem bloquear.
bool try_lock();
Valor de retorno
Se o cadeado foi adquirido, o valor true; caso contrário, o valor false.
try_lock_for
Tenta adquirir o bloqueio sem bloquear durante um número específico de milissegundos.
bool try_lock_for(unsigned int _Timeout);
Parâmetros
_Timeout
O número de milissegundos a aguardar antes do tempo limite.
Valor de retorno
Se o cadeado foi adquirido, o valor true; caso contrário, o valor false.
desbloquear
Desbloqueia a secção crítica.
void unlock();