CComCriticalSection (clase)
Esta clase proporciona métodos para obtener y liberar la propiedad de un objeto de sección crítica.
Sintaxis
class CComCriticalSection
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CComCriticalSection::CComCriticalSection | Constructor . |
Métodos públicos
Nombre | Descripción |
---|---|
CComCriticalSection::Init | Crea e inicializa un objeto de sección crítica. |
CComCriticalSection::Lock | Obtiene la propiedad del objeto de sección crítica. |
CComCriticalSection::Term | Libera los recursos del sistema usados por el objeto de sección crítica. |
CComCriticalSection::Unlock | Libera la propiedad del objeto de sección crítica. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CComCriticalSection::m_sec | Objeto CRITICAL_SECTION. |
Comentarios
CComCriticalSection
es similar a la clase CComAutoCriticalSection, salvo que debe inicializar y liberar explícitamente la sección crítica.
Normalmente, CComCriticalSection
se usa por medio del nombre de typedef
CriticalSection. Este nombre hace referencia a CComCriticalSection
cuando se usa CComMultiThreadModel.
Consulte la clase CComCritSecLock para conocer una manera más segura de usar esta clase que llamar a Lock
y Unlock
directamente.
Requisitos
Encabezado: atlcore.h
CComCriticalSection::CComCriticalSection
Constructor .
CComCriticalSection() throw();
Comentarios
Establece el miembro de datos m_sec en NULL.
CComCriticalSection::Init
Llama a la función InitializeCriticalSection de Win32, que inicializa el objeto de sección crítica contenido en el miembro de datos m_sec.
HRESULT Init() throw();
Valor devuelto
Devuelve S_OK si se ejecuta correctamente y E_OUTOFMEMORY o E_FAIL en caso de error.
CComCriticalSection::Lock
Llama a la función EnterCriticalSection de Win32, que espera hasta que el subproceso pueda tomar la propiedad del objeto de sección crítica contenido en el miembro de datos m_sec.
HRESULT Lock() throw();
Valor devuelto
Devuelve S_OK si se ejecuta correctamente y E_OUTOFMEMORY o E_FAIL en caso de error.
Comentarios
El objeto de sección crítica se debe inicializar primero con una llamada al método Init. Cuando el código protegido haya terminado de ejecutarse, el subproceso debe llamar a Unlock para liberar la propiedad de la sección crítica.
CComCriticalSection::m_sec
Contiene un objeto de sección crítica que usan todos los métodos CComCriticalSection
.
CRITICAL_SECTION m_sec;
CComCriticalSection::Term
Llama a la función DeleteCriticalSection de Win32, que libera todos los recursos utilizados por el objeto de sección crítica contenido en el miembro de datos m_sec.
HRESULT Term() throw();
Valor devuelto
Devuelve S_OK.
Comentarios
Una vez que se ha llamado a Term
, la sección crítica ya no se puede usar para la sincronización.
CComCriticalSection::Unlock
Llama a la función LeaveCriticalSection de Win32, que libera la propiedad del objeto de sección crítica contenido en el miembro de datos m_sec.
HRESULT Unlock() throw();
Valor devuelto
Devuelve S_OK.
Comentarios
Para obtener primero la propiedad, el subproceso debe llamar al método Lock. Cada llamada a Lock
requiere una llamada correspondiente a Unlock
para liberar la propiedad de la sección crítica.
Consulte también
CComFakeCriticalSection (clase)
Información general sobre la clase
CComCritSecLock (clase)