CCriticalSection::Lock
Llame a esta función miembro para obtener acceso al objeto de sección crítica.
BOOL Lock( );
BOOL Lock(
DWORD dwTimeout
);
Parámetros
- dwTimeout
Lock omite este valor de parámetro.
Valor devuelto
Distinto de cero si la función es correcta; si no 0.
Comentarios
Lock es una llamada de bloqueo que no volverá hasta que se señala el objeto de sección crítica (disponible).
Si es agotado espera son necesario, puede utilizar un objeto de CMutex en lugar de un objeto de CCriticalSection .
Si Lock no puede para asignar memoria de sistema necesaria, una excepción de memoria (de CMemoryExceptionescribe) automáticamente se produce.
Ejemplo
Este ejemplo muestra el enfoque anidado de sección crítica controlar el acceso a un recurso compartido (el objeto estático de _strShared ) mediante un objeto compartido de CCriticalSection .La función de SomeMethod muestra actualizar un recurso compartido de manera segura.
//Definition of critical section class
class CMyCritSectClass
{
static CString _strShared; //shared resource
static CCriticalSection _critSect;
public:
CMyCritSectClass(void) {}
~CMyCritSectClass(void) {}
void SomeMethod(void); //locks, modifies, and unlocks shared resource
};
//Declaration of static members and SomeMethod
CString CMyCritSectClass::_strShared;
CCriticalSection CMyCritSectClass::_critSect;
void CMyCritSectClass::SomeMethod()
{
_critSect.Lock();
if (_strShared == "")
_strShared = "<text>";
_critSect.Unlock();
}
Requisitos
encabezado: afxmt.h