Partilhar via


critical_section Classe

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

Consulte também

concorrência Namespace
reader_writer_lock Classe