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 |
---|---|
Constrói um objeto de CCriticalSection . |
Métodos públicos
Nome |
Descrição |
---|---|
Uso obter acesso ao objeto de CCriticalSection . |
|
Libera o objeto de CCriticalSection . |
Operadores públicos
Nome |
Descrição |
---|---|
Recupera um ponteiro para o objeto interno de CRITICAL_SECTION . |
Membros públicos de dados
Nome |
Descrição |
---|---|
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
CCriticalSection
Requisitos
Cabeçalho: afxmt.h