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