Classe CSyncObject
Classe virtuale pura che fornisce la funzionalità comune agli oggetti di sincronizzazione in Win32.
Sintassi
class CSyncObject : public CObject
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CSyncObject::CSyncObject | Costruisce un oggetto CSyncObject . |
Metodi pubblici
Nome | Descrizione |
---|---|
CSyncObject::Lock | Ottiene l'accesso all'oggetto di sincronizzazione. |
CSyncObject::Unlock | Ottiene l'accesso all'oggetto di sincronizzazione. |
Operatori pubblici
Nome | Descrizione |
---|---|
CSyncObject::operator HANDLE | Fornisce l'accesso all'oggetto di sincronizzazione. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CSyncObject::m_hObject | Handle per l'oggetto di sincronizzazione sottostante. |
Osservazioni:
La libreria di classi Microsoft Foundation fornisce diverse classi derivate da CSyncObject
. Si tratta di CEvent, CMutex, CCriticalSection e CSemaphore.
Per informazioni su come usare gli oggetti di sincronizzazione, vedere l'articolo Multithreading: Come usare le classi di sincronizzazione.
Gerarchia di ereditarietà
CSyncObject
Requisiti
Intestazione: afxmt.h
CSyncObject::CSyncObject
Costruisce un oggetto di sincronizzazione con il nome specificato.
explicit CSyncObject(LPCTSTR pstrName);
virtual ~CSyncObject();
Parametri
pstrName
Nome dell'oggetto. Se NULL, pstrName sarà null.
CSyncObject::Lock
Chiamare questa funzione per ottenere l'accesso alla risorsa controllata dall'oggetto di sincronizzazione.
virtual BOOL Lock(DWORD dwTimeout = INFINITE);
Parametri
dwTimeout
Specifica la quantità di tempo in millisecondi in cui attendere che l'oggetto di sincronizzazione sia disponibile (segnalato). Se INFINITE, Lock
attenderà fino a quando l'oggetto non viene segnalato prima della restituzione.
Valore restituito
Diverso da zero se la funzione ha avuto esito positivo; in caso contrario, 0.
Osservazioni:
Se l'oggetto di sincronizzazione viene segnalato, Lock
verrà restituito correttamente e il thread ora è proprietario dell'oggetto . Se l'oggetto di sincronizzazione non è firmato (non disponibile), Lock
attenderà che l'oggetto di sincronizzazione venga segnalato fino al numero di millisecondi specificato nel parametro dwTimeOut . Se l'oggetto di sincronizzazione non è stato segnalato nell'intervallo di tempo specificato, Lock
restituisce un errore.
CSyncObject::m_hObject
Handle per l'oggetto di sincronizzazione sottostante.
HANDLE m_hObject;
CSyncObject::operator HANDLE
Utilizzare questo operatore per ottenere l'handle dell'oggetto CSyncObject
.
operator HANDLE() const;
Valore restituito
In caso di esito positivo, l'handle dell'oggetto di sincronizzazione; in caso contrario, NULL.
Osservazioni:
È possibile usare l'handle per chiamare direttamente le API di Windows.
CSyncObject::Unlock
La dichiarazione di Unlock
senza parametri è una funzione virtuale pura e deve essere sottoposta a override da tutte le classi che derivano da CSyncObject
.
virtual BOOL Unlock() = 0; virtual BOOL Unlock(
LONG lCount,
LPLONG lpPrevCount = NULL);
Parametri
lCount
Non usato per impostazione predefinita.
lpPrevCount
Non usato per impostazione predefinita.
Valore restituito
L'implementazione predefinita restituisce sempre TRUE.
Osservazioni:
L'implementazione predefinita della dichiarazione con due parametri restituisce sempre TRUE. Questa funzione viene chiamata per rilasciare l'accesso all'oggetto di sincronizzazione di proprietà del thread chiamante. La seconda dichiarazione viene fornita per gli oggetti di sincronizzazione, ad esempio semafori che consentono più di un accesso a una risorsa controllata.