Compartilhar via


Classe CCriticalSection

“Representa uma seção crítica” — um objeto de sincronização que permite que um segmento de cada vez acessar um recurso ou uma seção de código.

class CCriticalSection : public CSyncObject

Membros

Construtores public

Nome

Descrição

CCriticalSection::CCriticalSection

Constrói um objeto de CCriticalSection .

Métodos públicos

Nome

Descrição

CCriticalSection::Lock

Uso obter acesso ao objeto de CCriticalSection .

CCriticalSection::Unlock

Libera o objeto de CCriticalSection .

Operadores públicos

Nome

Descrição

CCriticalSection::operator CRITICAL_SECTION *

Recupera um ponteiro para o objeto interno de CRITICAL_SECTION .

Membros públicos de dados

Nome

Descrição

CCriticalSection::m_sect

Um objeto de CRITICAL_SECTION .

Comentários

As seções críticos são úteis quando apenas um segmento de cada vez pode ser permitido modificar dados ou outro recurso controlado. Por exemplo, adicionar nós a uma lista vinculada é um processo que deve ser apenas permitido por um segmento de cada vez. Usando um objeto de CCriticalSection para controlar a lista vinculada, apenas um segmento de cada vez pode obter acesso à lista.

Dica

A funcionalidade da classe de CCriticalSection é fornecida por um objeto real do Win32 CRITICAL_SECTION .

As seções críticos são usados em vez de mutexes (consulte) CMutexquando a velocidade é essencial e o recurso não será usado fora dos limites de processo.

Há dois métodos para usar um objeto de CCriticalSection : autônomo e inserido em uma classe.

  • O método autônomo para usar um objeto autônomo de CCriticalSection , constrói o objeto de CCriticalSection quando necessário. Depois que um retorno com êxito de construtor, bloquear explicitamente o objeto com uma chamada a Bloquear. Chame desbloquear quando você terminar que acessa a seção crítica. Esse método, quando esclarecedor a alguém que lê seu código-fonte, é um erro propenso como você deve bloquear lembrar e desbloquear a seção crítica antes e depois de acesso.

    Um método mais preferível é usar a classe de CSingleLock . Também tem um método de Lock e de Unlock , mas você não tem que se preocupar sobre desbloquear o recurso se ocorrer uma exceção.

  • Método inserido você também pode compartilhar uma classe com vários segmentos adicionando CCriticalSection- digite o membro de dados para a classe e para bloquear o membro de dados quando necessário.

Para obter mais informações sobre como usar objetos de CCriticalSection , consulte o artigo multithreading: Como usar as classes de sincronização.

Hierarquia de herança

CObject

CSyncObject

CCriticalSection

Requisitos

Cabeçalho: afxmt.h

Consulte também

Referência

Classe CSyncObject

Gráfico da hierarquia

Classe CMutex