Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een abstractie voor een uitvoeringsdraad. Als u wilt dat uw scheduler user-mode schedulable (UMS)-threads krijgt, stelt u de waarde voor het scheduler-beleidselement SchedulerKind in op UmsThreadDefault, en implementeert u de IUMSScheduler interface. UMS-threads worden alleen ondersteund op 64-bits besturingssystemen met versie Windows 7 en hoger.
Syntaxis
struct IUMSThreadProxy : public IThreadProxy;
Leden
Openbare methoden
| Naam | Description |
|---|---|
| IUMSThreadProxy::EnterCriticalRegion | Wordt aangeroepen om een kritieke regio in te voeren. Wanneer de taakplanner zich in een kritieke sectie bevindt, worden asynchrone blokkeringsbewerkingen die plaatsvinden tijdens de sectie, niet waargenomen. Dit betekent dat de scheduler niet opnieuw wordt opgeslagen voor paginafouten, threadsuspensies, asynchrone procedureaanroepen (APC's) van kernels, enzovoort voor een UMS-thread. |
| IUMSThreadProxy::EnterHyperCriticalRegion | Wordt aangeroepen om een hyperkritieke regio te betreden. Wanneer de planner zich in een hyperkritische regio bevindt, ziet de planner geen blokkerende bewerkingen die plaatsvinden tijdens de regio. Dit betekent dat de scheduler niet opnieuw wordt aangeroepen voor blokkerende functieaanroepen, blokkerende vergrendelingspogingen, paginafouten, draadonderbrekingen, kernel-asynchrone procedureaanroepen (APC's), enzovoort voor een UMS-thread. |
| IUMSThreadProxy::ExitCriticalRegion | Wordt aangeroepen om een kritieke regio te verlaten. |
| IUMSThreadProxy::ExitHyperCriticalRegion | Wordt aangeroepen om een hyperkritieke regio te verlaten. |
| IUMSThreadProxy::GetCriticalRegionType | Retourneert binnen welk type kritieke regio de threadproxy zich bevindt. Omdat hyperkritische regio's een superset vormen van kritieke regio's, zal InsideHyperCriticalRegion worden geretourneerd wanneer code eerst een kritieke regio en daarna een hyperkritische regio is binnengetreden. |
Overnamehiƫrarchie
IUMSThreadProxy
Requirements
Koptekst: concrtrm.h
Naamruimte: concurrentie
Methode IUMSThreadProxy::EnterCriticalRegion
Wordt aangeroepen om een kritiek gebied te betreden. Wanneer de planner zich in een kritiek gebied bevindt, worden asynchrone blokkeringsbewerkingen die tijdens dit gebied plaatsvinden, niet waargenomen. Dit betekent dat de scheduler niet opnieuw betreden wordt voor paginafouten, threadonderbrekingen, asynchrone procedureaanroepen (APC's) van kernels, enzovoort voor een UMS-thread.
virtual int EnterCriticalRegion() = 0;
Retourwaarde
De nieuwe diepte van de kritieke regio. Kritieke regio's zijn opnieuw aan het reentrant.
Methode IUMSThreadProxy::EnterHyperCriticalRegion
Wordt gebruikt om een hyperkritische sectie te betreden. Wanneer de planner zich in een hyperkritische regio bevindt, ziet de planner geen blokkerende bewerkingen die plaatsvinden tijdens de regio. Dit betekent dat de scheduler niet opnieuw wordt aangeroepen voor het blokkeren van functieaanroepen, vergrendelingspogingen die blokkeren, paginafouten, threadsuspensies, kernel asynchrone procedureaanroepen (APC's), enzovoort in het geval van een UMS-thread.
virtual int EnterHyperCriticalRegion() = 0;
Retourwaarde
De nieuwe diepte van hyperkritieke regio. Hyperkritische regio's zijn opnieuw aan het reentrant.
Opmerkingen
De scheduler moet doorgaans extra voorzichtig zijn met de methoden die worden aangeroepen en welke vergrendelingen het in dergelijke regio's verkrijgt. Als code in een dergelijke sectie blokkeert op een vergrendeling die wordt vastgehouden door iets waarvoor de scheduler verantwoordelijk is, kan een deadlock optreden.
Methode IUMSThreadProxy::ExitCriticalRegion
Wordt aangeroepen om een kritieke regio af te sluiten.
virtual int ExitCriticalRegion() = 0;
Retourwaarde
De nieuwe diepte van de kritieke regio. Kritieke regio's zijn opnieuw aan het reentrant.
Methode IUMSThreadProxy::ExitHyperCriticalRegion
Wordt aangeroepen om een hyperkritieke gebied te verlaten.
virtual int ExitHyperCriticalRegion() = 0;
Retourwaarde
De nieuwe diepte van hyperkritieke regio. Hyperkritische regio's zijn opnieuw aan het reentrant.
Methode IUMSThreadProxy::GetCriticalRegionType
Retourneert binnen welk type kritieke regio de threadproxy zich bevindt. Omdat hyperkritische regio's een superset vormen van kritieke regio's, zal InsideHyperCriticalRegion worden geretourneerd wanneer code eerst een kritieke regio en daarna een hyperkritische regio is binnengetreden.
virtual CriticalRegionType GetCriticalRegionType() const = 0;
Retourwaarde
Het type kritieke regio waar de threadproxy zich bevindt.