Condividi tramite


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à

CObject

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.

Vedi anche

Classe CObject
Grafico della gerarchia