Struttura IUMSThreadProxy
Astrazione per un thread di esecuzione. Se si vuole che all'utilità di pianificazione siano concessi thread UMS, impostare il valore per l'elemento dei criteri dell'utilità di pianificazione SchedulerKind
su UmsThreadDefault
e implementare l'interfaccia IUMSScheduler
. I thread UMS sono supportati solo su sistemi operativi a 64 bit con Windows 7 e versioni successive.
Sintassi
struct IUMSThreadProxy : public IThreadProxy;
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
IUMSThreadProxy::EnterCriticalRegion | Chiamato per immettere un'area critica. Quando si trova all'interno di un'area critica, l'utilità di pianificazione non osserverà le operazioni di blocco asincrone che si verificano durante l'area. Ciò significa che l'utilità di pianificazione non verrà nuovamente immessa per errori di pagina, sospensioni di thread, chiamate di routine asincrone del kernel (APC) e così via, per un thread UMS. |
IUMSThreadProxy::EnterHyperCriticalRegion | Chiamato per immettere un'area ipercritica. Quando si trova all'interno di un'area ipercritica, l'utilità di pianificazione non osserverà alcuna operazione di blocco che si verifica durante l'area. Pertanto l'utilità di pianificazione non sarà nuovamente immessa per bloccare le chiamate di funzione, i tentativi di acquisizione di blocchi tramite cui vengono eseguiti blocchi, gli errori di pagina, le sospensioni di thread, le chiamate asincrone di procedura del kernel (APC, Asynchronous Procedure Call) e così via, per un thread UMS. |
IUMSThreadProxy::ExitCriticalRegion | Chiamato per uscire da un'area critica. |
IUMSThreadProxy::ExitHyperCriticalRegion | Chiamato per uscire da un'area ipercritica. |
IUMSThreadProxy::GetCriticalRegionType | Restituisce il tipo di area critica all'interno del proxy del thread. Poiché le aree ipercritiche sono un superset di aree critiche, se il codice ha immesso un'area critica e quindi verrà restituita un'area InsideHyperCriticalRegion ipercritica. |
Gerarchia di ereditarietà
IUMSThreadProxy
Requisiti
Intestazione: concrtrm.h
Spazio dei nomi: Concurrency
Metodo IUMSThreadProxy::EnterCriticalRegion
Chiamato per immettere un'area critica. Quando si trova all'interno di un'area critica, l'utilità di pianificazione non osserverà le operazioni di blocco asincrone che si verificano durante l'area. Ciò significa che l'utilità di pianificazione non verrà nuovamente immessa per errori di pagina, sospensioni di thread, chiamate di routine asincrone del kernel (APC) e così via, per un thread UMS.
virtual int EnterCriticalRegion() = 0;
Valore restituito
Nuova profondità dell'area critica. Le aree critiche sono reentranti.
Metodo IUMSThreadProxy::EnterHyperCriticalRegion
Chiamato per immettere un'area ipercritica. Quando si trova all'interno di un'area ipercritica, l'utilità di pianificazione non osserverà alcuna operazione di blocco che si verifica durante l'area. Pertanto l'utilità di pianificazione non sarà nuovamente immessa per bloccare le chiamate di funzione, i tentativi di acquisizione di blocchi tramite cui vengono eseguiti blocchi, gli errori di pagina, le sospensioni di thread, le chiamate asincrone di procedura del kernel (APC, Asynchronous Procedure Call) e così via, per un thread UMS.
virtual int EnterHyperCriticalRegion() = 0;
Valore restituito
Nuova profondità dell'area ipercritica. Le aree ipercritiche sono reentrant.
Osservazioni:
L'utilità di pianificazione deve essere straordinariamente attenta sui metodi che chiama e sui blocchi acquisiti in tali aree. Se il codice in un'area di questo tipo si blocca in un blocco mantenuto da un elemento che l'utilità di pianificazione è responsabile della pianificazione, potrebbe verificarsi un deadlock.
Metodo IUMSThreadProxy::ExitCriticalRegion
Chiamato per uscire da un'area critica.
virtual int ExitCriticalRegion() = 0;
Valore restituito
Nuova profondità dell'area critica. Le aree critiche sono reentranti.
Metodo IUMSThreadProxy::ExitHyperCriticalRegion
Chiamato per uscire da un'area ipercritica.
virtual int ExitHyperCriticalRegion() = 0;
Valore restituito
Nuova profondità dell'area ipercritica. Le aree ipercritiche sono reentrant.
Metodo IUMSThreadProxy::GetCriticalRegionType
Restituisce il tipo di area critica all'interno del proxy del thread. Poiché le aree ipercritiche sono un superset di aree critiche, se il codice ha immesso un'area critica e quindi verrà restituita un'area InsideHyperCriticalRegion
ipercritica.
virtual CriticalRegionType GetCriticalRegionType() const = 0;
Valore restituito
Il tipo di area critica in cui si trova il proxy del thread.