Compartir a través de


CCriticalSection Class

Representa una “sección crítica” — un objeto de sincronización que permite que un subproceso cada vez tenga acceso a un recurso o a una sección de código.

class CCriticalSection : public CSyncObject

Members

Constructores públicos

Name

Descripción

CCriticalSection::CCriticalSection

Crea un objeto CCriticalSection.

Métodos públicos

Name

Descripción

CCriticalSection::Lock

Utilice para obtener acceso al objeto de CCriticalSection .

CCriticalSection::Unlock

Libera el objeto de CCriticalSection .

Operadores públicos

Name

Descripción

CCriticalSection::operator CRITICAL_SECTION*

Recupera un puntero al objeto interno de CRITICAL_SECTION .

Miembros de datos públicos

Name

Descripción

CCriticalSection::m_sect

un objeto de CRITICAL_SECTION .

Comentarios

Las secciones críticas son útiles cuando sólo un subproceso cada vez se puede permitir modificar datos o a otro recurso controlado. Por ejemplo, agregar nodos a una lista vinculada es un proceso que se debe permitir únicamente por un subproceso cada vez. Utilizando un objeto de CCriticalSection para controlar la lista vinculada, solo un subproceso a la vez puede obtener acceso a la lista.

Nota

La funcionalidad de la clase de CCriticalSection proporcionan un objeto real de Win32 CRITICAL_SECTION .

Las secciones críticas se utilizan en lugar de exclusiones mutuas (vea CMutex) cuando la velocidad es crítica y no se utilizará el recurso a través de límites de procesos.

Hay dos métodos para utilizar un objeto de CCriticalSection : independiente y incrustado en una clase.

  • El método independiente para utilizar un objeto independiente de CCriticalSection , construye el objeto de CCriticalSection cuando es necesario. Después de que un retorno correcto de constructor, explícitamente bloquea el objeto con una llamada a bloqueo. Llame a Unlock cuando termine teniendo acceso a la sección crítica. Este método, mientras que de alguien que lee el código fuente, es un error más propenso como debe recordar bloquear y desbloquear la sección crítica antes y después de acceso.

    un método más preferible es utilizar la clase de CSingleLock . También tiene un método de Lock y de Unlock , pero no tiene que preocuparse de desbloquear el recurso si se produce una excepción.

  • El método incrustado también puede compartir una clase con varios subprocesos agregando CCriticalSection- escriba el miembro de datos a la clase y a bloquear el miembro de datos cuando sea necesario.

Para obtener más información sobre cómo utilizar los objetos de CCriticalSection , vea el artículo Multithreading: Cómo utilizar las clases de sincronización.

Jerarquía de herencia

CObject

CSyncObject

CCriticalSection

Requisitos

encabezado: afxmt.h

Vea también

Referencia

CSyncObject (Clase)

Gráfico de jerarquías

CMutex (Clase)