IUMSThreadProxy-structuur

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

IThreadProxy

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.

Zie ook

concurrentie Namespace
IUMSScheduler Structuur