Sdílet prostřednictvím


IUMSThreadProxy – struktura

Abstrakce pro vlákno provádění. Pokud chcete, aby byl plánovač udělen podprocesy režimu uživatele (UMS), nastavte hodnotu prvku SchedulerKind zásad plánovače na UmsThreadDefaulta implementujte IUMSScheduler rozhraní. Vlákna UMS jsou podporována pouze v 64bitových operačních systémech s verzí Windows 7 a vyšší.

Syntaxe

struct IUMSThreadProxy : public IThreadProxy;

Členové

Veřejné metody

Název Popis
IUMSThreadProxy::EnterCriticalRegion Volá se, aby bylo možné zadat kritickou oblast. V kritické oblasti plánovač nebude sledovat asynchronní blokující operace, ke kterým dochází během této oblasti. To znamená, že plánovač nebude znovu zařazen pro chyby stránky, pozastavení vláken, asynchronní volání procedur jádra (ACS) atd. pro vlákno UMS.
IUMSThreadProxy::EnterHyperCriticalRegion Volá se, aby bylo možné zadat oblast s hyperkritikou. Pokud je v hyperkrité oblasti, plánovač nebude sledovat žádné blokující operace, ke kterým dochází během této oblasti. To znamená, že plánovač nebude znovu zařazen pro blokování volání funkcí, pokusy o získání zámku, které blokují, chyby stránky, pozastavení vlákna, asynchronní volání procedur jádra (APCs) a tak dále, pro vlákno UMS.
IUMSThreadProxy::ExitCriticalRegion Volá se, aby se ukončila kritická oblast.
IUMSThreadProxy::ExitHyperCriticalRegion Volá se, aby se ukončila oblast s hyperkritikou.
IUMSThreadProxy::GetCriticalRegionType Vrátí druh kritické oblasti, ve které je proxy vlákna. Vzhledem k tomu, že hyper-kritické oblasti jsou nadmnožinou kritických oblastí, pokud kód zadal kritickou oblast a pak se vrátí hyperkritický region InsideHyperCriticalRegion .

Hierarchie dědičnosti

IThreadProxy

IUMSThreadProxy

Požadavky

Hlavička: concrtrm.h

Namespace: souběžnost

IUMSThreadProxy::EnterCriticalRegion – metoda

Volá se, aby bylo možné zadat kritickou oblast. V kritické oblasti plánovač nebude sledovat asynchronní blokující operace, ke kterým dochází během této oblasti. To znamená, že plánovač nebude znovu zařazen pro chyby stránky, pozastavení vláken, asynchronní volání procedur jádra (ACS) atd. pro vlákno UMS.

virtual int EnterCriticalRegion() = 0;

Návratová hodnota

Nová hloubka kritické oblasti. Kritické oblasti jsou znovu prováděné.

IUMSThreadProxy::EnterHyperCriticalRegion – metoda

Volá se, aby bylo možné zadat oblast s hyperkritikou. Pokud je v hyperkrité oblasti, plánovač nebude sledovat žádné blokující operace, ke kterým dochází během této oblasti. To znamená, že plánovač nebude znovu zařazen pro blokování volání funkcí, pokusy o získání zámku, které blokují, chyby stránky, pozastavení vlákna, asynchronní volání procedur jádra (APCs) a tak dále, pro vlákno UMS.

virtual int EnterHyperCriticalRegion() = 0;

Návratová hodnota

Nová hloubka hyperkritiky. Hyper-kritické oblasti jsou znovu prováděné.

Poznámky

Plánovač musí být mimořádně opatrný ohledně toho, jaké metody volá a jaké zámky v takových oblastech získává. Pokud kód v takové oblasti blokuje zámek, který je uložený něčím, co plánovač zodpovídá za plánování, může dojít k zablokování.

Metoda IUMSThreadProxy::ExitCriticalRegion

Volá se, aby se ukončila kritická oblast.

virtual int ExitCriticalRegion() = 0;

Návratová hodnota

Nová hloubka kritické oblasti. Kritické oblasti jsou znovu prováděné.

IUMSThreadProxy::ExitHyperCriticalRegion – metoda

Volá se, aby se ukončila oblast s hyperkritikou.

virtual int ExitHyperCriticalRegion() = 0;

Návratová hodnota

Nová hloubka hyperkritiky. Hyper-kritické oblasti jsou znovu prováděné.

IUMSThreadProxy::GetCriticalRegionType – metoda

Vrátí druh kritické oblasti, ve které je proxy vlákna. Vzhledem k tomu, že hyper-kritické oblasti jsou nadmnožinou kritických oblastí, pokud kód zadal kritickou oblast a pak se vrátí hyperkritický region InsideHyperCriticalRegion .

virtual CriticalRegionType GetCriticalRegionType() const = 0;

Návratová hodnota

Typ kritické oblasti, ve které je proxy vláken.

Viz také

concurrency – obor názvů
IUMSScheduler – struktura