Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Třída CCriticalSection

Diagram hierarchie

CSingleLock::Lock