Condividi tramite


CCriticalSection::Lock

Chiamare la funzione membro per accedere all'oggetto sezione critica.

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

Parametri

  • dwTimeout
    Lock ignora il valore del parametro.

Valore restituito

Diverso da zero se la funzione è riuscita, in caso contrario 0.

Note

Lock è una chiamata di blocco che non restituirà finché non viene segnalato l'oggetto sezione critica (diventa disponibile.

Se attende calcolati sono necessarie, è possibile utilizzare un oggetto CMutex anziché un oggetto CCriticalSection.

Se Lock non riesce ad allocare memoria di sistema necessarie, viene generata un'eccezione di memoria (di tipo CMemoryException) viene automaticamente generata un'eccezione.

Esempio

Viene descritto l'approccio annidato la sezione critica controllando l'accesso a una risorsa condivisa (l'oggetto static _strShared ) utilizzando un oggetto condiviso CCriticalSection. La funzione SomeMethod viene illustrato aggiornare una risorsa condivisa in modo sicuro.

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

Requisiti

Header: afxmt.h

Vedere anche

Riferimenti

Classe CCriticalSection

Grafico delle gerarchie

CSingleLock::Lock