Udostępnij za pośrednictwem


CCriticalSection::Lock

Wywołanie tej funkcji Członkowskich uzyskanie dostępu do obiektu sekcji krytycznej.

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

Parametry

  • dwTimeout
    Lockignoruje wartości tego parametru.

Wartość zwracana

Niezerowa, jeśli funkcja zakończyła się pomyślnie; 0 inaczej.

Uwagi

Lockto wywołanie blokowania, którego nie zwróci, aż obiekt sekcję krytyczną jest sygnalizowany (staje się dostępna).

Jeżeli konieczne są czasu oczekiwania można używać CMutex obiekt zamiast CCriticalSection obiektu.

Jeśli Lock nie powiedzie się przydzielić pamięci systemu niezbędne wyjątek pamięci (typu CMemoryException) jest generowany automatycznie.

Przykład

Ten przykład demonstruje podejście zagnieżdżonych sekcji krytycznej, kontrolowanie dostępu do zasobu udostępnionego (statycznego _strShared obiektu) za pomocą udostępnionego CCriticalSection obiektu.SomeMethod Funkcja demonstruje aktualizacji zasobu udostępnionego w bezpieczny sposób.

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

Wymagania

Nagłówek: afxmt.h

Zobacz też

Informacje

Klasa CCriticalSection

Diagram hierarchii

CSingleLock::Lock