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 UmsThreadDefault
a 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
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.