Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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