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à

IThreadProxy

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.

Vedi anche

Spazio dei nomi concurrency
Struttura IUMSScheduler