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