CCriticalSection::Lock
Volání funkce tohoto člena získat přístup k objektu kritický oddíl.
BOOL Lock( );
BOOL Lock(
DWORD dwTimeout
);
Parametry
- dwTimeout
LockHodnota tohoto parametru ignoruje.
Vrácená hodnota
Nenulová hodnota, pokud funkce byla úspěšná. jinak 0.
Poznámky
Lockblokování volání, se nevrátí, dokud je signalizováno následným tichem kritické části objektu (k dispozici).
Pokud jsou nutné časované čeká, můžete použít CMutex objekt místo CCriticalSection objektu.
Pokud Lock selhání přidělení paměti potřebné systémové paměti výjimku (typu CMemoryException) je automaticky vyvolána.
Příklad
Tento příklad ukazuje přístup vnořené kritický oddíl řízením přístupu ke sdílenému prostředku (statickému _strShared objektu) pomocí sdílené CCriticalSection objektu. SomeMethod Funkce ukazuje aktualizaci sdíleného prostředku bezpečným způsobem.
//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();
}
Požadavky
Záhlaví: afxmt.h