Compartir a través de


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

Vea también

Referencia

CCriticalSection Class

Gráfico de jerarquías

CSingleLock::Lock