CCriticalSection

Un objeto de la clase CCriticalSection representa una sección de"crítica": un objeto de sincronización que permite un subproceso a la vez para tener acceso a un recurso o una sección de código. Secciones críticas son útiles cuando sólo un subproceso en un momento pueden modificar datos o algún otro recurso controlado. Por ejemplo, agregar nodos a una lista enlazada es un proceso que sólo se debería permitir por un subproceso en un momento. Mediante un objeto CCriticalSection para controlar la lista vinculada, sólo un subproceso en un momento puede acceder a la lista.

Secciones críticas se utilizan en lugar de semáforos cuando la velocidad es crítica y no se utilizará el recurso a través de límites de proceso. Para obtener más información sobre el uso de semáforos en MFC, vea CMutex.

Para utilizar un objeto CCriticalSection , construir el objeto CCriticalSection cuando es necesario. A continuación, puede acceder a la sección crítica cuando vuelva el constructor. Llamar desbloqueo cuando haya terminado de acceder a la sección crítica.

Para acceder a un recurso controlado por un objeto de CCriticalSection de esta manera, primero debe crear una variable de tipo CSingleLock en función de miembro de acceso del recurso. A continuación, llamar a función miembro de bloqueo del objeto de bloqueo (por ejemplo, CSingleLock::Lock). En este punto, su hilo será obtener acceso al recurso, espere a que el recurso a liberarse y obtener acceso o esperar a que los recursos para ser lanzado y fuera de tiempo, no tener acceso al recurso. En cualquier caso, el recurso ha sido visitado de una manera segura para los subprocesos. Para liberar el recurso, utilice la función miembro de desbloqueo del objeto de bloqueo (por ejemplo, CSingleLock::Unlock) o permitir que caen fuera del ámbito el objeto de bloqueo.

Alternativamente, puede crear un objeto de CCriticalSection independiente y acceso explícitamente antes de intentar obtener acceso al recurso controlado. Este método, mientras clara a alguien leyendo su código fuente, es más propenso a errores, debe recordar bloquear y desbloquear la sección crítica antes y después de acceso.

Para obtener más información sobre el uso de objetos de CCriticalSection , consulte el artículo subprocesamiento múltiple: cómo usar las clases de sincronización en la Guía del programador de Visual C++.

# include lt;afxmt.h>

Miembros de la clase |nbsp; Clase base | Diagrama de jerarquía

Muestra  Ejemplo de MFC MTGDI

Vea tambié&nnbsp;CMutex

Index