Compartilhar via


Classe CComCriticalSection

Essa classe fornece métodos para obter e liberar a propriedade de um objeto de seção crítico.

Sintaxe

class CComCriticalSection

Membros

Construtores públicos

Nome Descrição
CComCriticalSection::CComCriticalSection O construtor .

Métodos públicos

Nome Descrição
CComCriticalSection::Init Cria e inicializa um objeto de seção crítica.
CComCriticalSection::Lock Obtém a propriedade do objeto de seção crítica.
CComCriticalSection::Term Libera recursos do sistema usados pelo objeto de seção crítica.
CComCriticalSection::Unlock Libera a propriedade do objeto de seção crítica.

Membros de Dados Públicos

Nome Descrição
CComCriticalSection::m_sec Um objeto CRITICAL_SECTION.

Comentários

CComCriticalSection é semelhante à classe CComAutoCriticalSection, com a exceção de que você deve inicializar e liberar explicitamente a seção crítica.

Normalmente, você usa CComCriticalSection por meio do nome de typedef CriticalSection. Esse nome faz referência a CComCriticalSection quando CComMultiThreadModel estiver sendo usado.

Confira a Classe CComCritSecLock para obter uma forma mais segura de usar essa classe do que chamar Lock e Unlock diretamente.

Requisitos

Cabeçalho: atlcore.h

CComCriticalSection::CComCriticalSection

O construtor .

CComCriticalSection() throw();

Comentários

Define o membro de dados m_sec como NULL.

CComCriticalSection::Init

Chama a função Win32 InitializeCriticalSection, que inicializa o objeto de seção crítica contido no membro de dados m_sec.

HRESULT Init() throw();

Valor de retorno

Retorna S_OK em caso de êxito e E_OUTOFMEMORY ou E_FAIL em caso de falha.

CComCriticalSection::Lock

Chama a função Win32 EnterCriticalSection, que aguarda até que o thread possa assumir a propriedade do objeto de seção crítica contido no membro de dados m_sec.

HRESULT Lock() throw();

Valor de retorno

Retorna S_OK em caso de êxito e E_OUTOFMEMORY ou E_FAIL em caso de falha.

Comentários

Primeiro, o objeto de seção crítica deve ser inicializado com uma chamada para o método Init. Quando o código protegido terminar de ser executado, o thread deverá chamar Desbloqueio para liberar a propriedade da seção crítica.

CComCriticalSection::m_sec

Contém um objeto de seção crítico que é usado por todos os métodos CComCriticalSection.

CRITICAL_SECTION m_sec;

CComCriticalSection::Term

Chama a função Win32 DeleteCriticalSection, que libera todos os recursos usados pelo objeto de seção crítica contido no membro de dados m_sec.

HRESULT Term() throw();

Valor de retorno

Returns S_OK.

Comentários

Depois que Term for chamado, a seção crítica não poderá mais ser usada para sincronização.

CComCriticalSection::Unlock

Chama a função Win32 LeaveCriticalSection, que libera a propriedade do objeto de seção crítica contido no membro de dados m_sec.

HRESULT Unlock() throw();

Valor de retorno

Returns S_OK.

Comentários

Para obter a propriedade primeiro, o thread deve chamar o método Lock. Cada chamada de Lock exige uma chamada correspondente de Unlock para liberar a propriedade da seção crítica.

Confira também

Classe CComFakeCriticalSection
Visão geral da aula
Classe CComCritSecLock