Partager via


CCriticalSection::Lock

Appelez la fonction membre pour accéder à l'objet de section critique.

BOOL Lock( ); 
BOOL Lock( 
   DWORD dwTimeout  
);

Paramètres

  • dwTimeout
    Lock ignore cette valeur de paramètre.

Valeur de retour

Une valeur différente de zéro si la fonction a abouti ; sinon 0.

Notes

Lock est un appel bloquant qui ne retourne pas tant que l'objet de section critique est signalé (devient disponible).

Si les attentes chronométrés sont nécessaires, vous pouvez utiliser un objet de CMutex au lieu d'un objet d' CCriticalSection .

Si Lock ne pas alloue la mémoire système nécessaire, une exception de mémoire (de type CMemoryException) est automatiquement levée.

Exemple

Cet exemple illustre l'approche imbriquée de section critique en vérifiant l'accès à une ressource partagée (l'objet statique d' _strShared ) à l'aide d'un objet partagé d' CCriticalSection . La fonction d' SomeMethod montre comment mettre à jour une ressource partagée de façon sécurisée.

//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();
}

Configuration requise

Header: afxmt.h

Voir aussi

Référence

CCriticalSection, classe

Graphique de la hiérarchie

CSingleLock::Lock