Freigeben über


IUMSThreadProxy-Struktur

Eine Abstraktion für einen Thread der Ausführung. Wenn dem Planer im Benutzermodus planbare (UMS) Threads gewährt werden sollen, legen Sie den Wert für das Planerrichtlinienelement SchedulerKind auf UmsThreadDefault fest, und implementieren Sie die IUMSScheduler-Schnittstelle. UMS-Threads werden nur unter 64-Bit-Betriebssystemen mit Version Windows 7 und höher unterstützt.

Syntax

struct IUMSThreadProxy : public IThreadProxy;

Member

Öffentliche Methoden

Name Beschreibung
IUMSThreadProxy::EnterCriticalRegion Wird aufgerufen, um einen kritischen Bereich einzugeben. In einem kritischen Bereich beobachtet der Planer keine asynchronen Blockierungsvorgänge, die während des Bereichs auftreten. Dies bedeutet, dass der Scheduler für Seitenfehler, Threadaufsetzungen, Kernel-asynchrone Prozeduraufrufe (APCs) und so weiter für einen UMS-Thread nicht erneut eingeteilt wird.
IUMSThreadProxy::EnterHyperCriticalRegion Wird aufgerufen, um einen hyperkritischen Bereich einzugeben. In einem hyperkritischen Bereich beobachtet der Planer keine Blockierungsvorgänge, die während der Region auftreten. Dies bedeutet, dass der Scheduler nicht erneut zum Blockieren von Funktionsaufrufen, Sperrerfassungsversuchen, die Blockierung, Seitenfehler, Threadaufsetzungen, Kernel-asynchrone Prozeduraufrufe (APCs) usw. für einen UMS-Thread erneut verwendet wird.
IUMSThreadProxy::ExitCriticalRegion Wird aufgerufen, um einen kritischen Bereich zu verlassen.
IUMSThreadProxy::ExitHyperCriticalRegion Wird aufgerufen, um einen hyperkritischen Bereich zu verlassen.
IUMSThreadProxy::GetCriticalRegionType Gibt die Art der kritischen Region zurück, in der sich der Threadproxy befindet. Da hyperkritische Regionen eine Obermenge kritischer Regionen sind, wird zurückgegeben, wenn Code einen kritischen Bereich eingegeben hat und dann eine hyperkritische Region InsideHyperCriticalRegion zurückgegeben wird.

Vererbungshierarchie

IThreadProxy

IUMSThreadProxy

Anforderungen

Kopfzeile: concrtrm.h

Namespace: Parallelität

IUMSThreadProxy::EnterCriticalRegion-Methode

Wird aufgerufen, um einen kritischen Bereich einzugeben. In einem kritischen Bereich beobachtet der Planer keine asynchronen Blockierungsvorgänge, die während des Bereichs auftreten. Dies bedeutet, dass der Scheduler für Seitenfehler, Threadaufsetzungen, Kernel-asynchrone Prozeduraufrufe (APCs) und so weiter für einen UMS-Thread nicht erneut eingeteilt wird.

virtual int EnterCriticalRegion() = 0;

Rückgabewert

Die neue Tiefe kritischer Regionen. Kritische Regionen werden wiederholt.

IUMSThreadProxy::EnterHyperCriticalRegion-Methode

Wird aufgerufen, um einen hyperkritischen Bereich einzugeben. In einem hyperkritischen Bereich beobachtet der Planer keine Blockierungsvorgänge, die während der Region auftreten. Dies bedeutet, dass der Scheduler nicht erneut zum Blockieren von Funktionsaufrufen, Sperrerfassungsversuchen, die Blockierung, Seitenfehler, Threadaufsetzungen, Kernel-asynchrone Prozeduraufrufe (APCs) usw. für einen UMS-Thread erneut verwendet wird.

virtual int EnterHyperCriticalRegion() = 0;

Rückgabewert

Die neue Tiefe hyperkritischer Regionen. Hyperkritische Regionen werden erneut wiederholt.

Hinweise

Der Planer muss außerordentlich sorgfältig darauf achten, welche Methoden sie aufruft und welche Sperren sie in solchen Regionen erwerben. Wenn Code in einer solchen Region eine Sperre blockiert, die von etwas gehalten wird, das der Planer für die Planung verantwortlich ist, kann Deadlock ensue.

IUMSThreadProxy::ExitCriticalRegion-Methode

Wird aufgerufen, um einen kritischen Bereich zu verlassen.

virtual int ExitCriticalRegion() = 0;

Rückgabewert

Die neue Tiefe kritischer Regionen. Kritische Regionen werden wiederholt.

IUMSThreadProxy::ExitHyperCriticalRegion-Methode

Wird aufgerufen, um einen hyperkritischen Bereich zu verlassen.

virtual int ExitHyperCriticalRegion() = 0;

Rückgabewert

Die neue Tiefe hyperkritischer Regionen. Hyperkritische Regionen werden erneut wiederholt.

IUMSThreadProxy::GetCriticalRegionType-Methode

Gibt die Art der kritischen Region zurück, in der sich der Threadproxy befindet. Da hyperkritische Regionen eine Obermenge kritischer Regionen sind, wird zurückgegeben, wenn Code einen kritischen Bereich eingegeben hat und dann eine hyperkritische Region InsideHyperCriticalRegion zurückgegeben wird.

virtual CriticalRegionType GetCriticalRegionType() const = 0;

Rückgabewert

Der Typ des kritischen Bereichs, in dem sich der Threadproxy befindet.

Siehe auch

Concurrency-Namespace
IUMSScheduler-Struktur