Compartir a través de


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)