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