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 |
---|---|
Crea un objeto CCriticalSection. |
Métodos públicos
Name |
Descripción |
---|---|
Utilice para obtener acceso al objeto de CCriticalSection . |
|
Libera el objeto de CCriticalSection . |
Operadores públicos
Name |
Descripción |
---|---|
Recupera un puntero al objeto interno de CRITICAL_SECTION . |
Miembros de datos públicos
Name |
Descripción |
---|---|
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
CCriticalSection
Requisitos
encabezado: afxmt.h