Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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)