Freigeben über


IUMSThreadProxy-Struktur

Eine Abstraktion für einen Ausführungsthread. 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;

Mitglieder

Öffentliche Methoden

Name Beschreibung
IUMSThreadProxy::EnterCriticalRegion Wird aufgerufen, um einen kritischen Bereich zu betreten. Wenn sich der Scheduler in einem kritischen Bereich befindet, beobachtet er keine asynchronen Blockierungsvorgänge, die in diesem Bereich auftreten. Dies bedeutet, dass der Scheduler bei Seitenfehlern, Threadaufhängungen, asynchronen Kernel-Prozeduraufrufen (APCs) und ähnlichen Ereignissen für einen UMS-Thread nicht erneut aufgerufen wird.
IUMSThreadProxy::EnterHyperCriticalRegion Wird aufgerufen, um einen hochkritischen Bereich zu betreten. In einem hyperkritischen Bereich beobachtet der Planer keine Blockierungsvorgänge, die innerhalb des Bereichs auftreten. Dies bedeutet, dass der Scheduler nicht für das Blockieren von Funktionsaufrufen, Sperrerfassungsversuche, die blockieren, Page Faults, Threadaussetzungen, Kernel-asynchrone Prozeduraufrufe (APCs) usw. für einen UMS-Thread aufgerufen 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 InsideHyperCriticalRegion zurückgegeben, wenn Code einen kritischen Bereich und anschließend eine hyperkritische Region betreten hat.

Vererbungshierarchie

IThreadProxy

IUMSThreadProxy

Anforderungen

Kopfzeile: concrtrm.h

Namespace: Parallelität

IUMSThreadProxy::EnterCriticalRegion-Methode

Aufgerufen, um einen kritischen Bereich zu betreten. In einem kritischen Bereich berücksichtigt der Scheduler keine asynchronen Blockierungsvorgänge, die während dieses Bereichs auftreten. Dies bedeutet, dass der Scheduler bei einem UMS-Thread nicht für Seitenfehler, Threadaufsetzungen, Kernel-asynchrone Prozeduraufrufe (APCs) und so weiter erneut aufgerufen wird.

virtual int EnterCriticalRegion() = 0;

Rückgabewert

Die neue Tiefe kritischer Regionen. Kritische Regionen sind reentrant.

IUMSThreadProxy::EnterHyperCriticalRegion Methode

Wird aufgerufen, um einen hyperkritischen Bereich einzugeben. In einem hyperkritischen Bereich registriert der Scheduler keine Blockierungsvorgänge, die innerhalb der Region auftreten. Dies bedeutet, dass der Scheduler nicht erneut verwendet wird, um blockierende Funktionsaufrufe, Sperrerfassungsversuche, die blockieren, Seitenfehler, Thread-Aufhängungen, Kernel-asynchrone Prozeduraufrufe (APCs) und ähnliches für einen UMS-Thread zu handhaben.

virtual int EnterHyperCriticalRegion() = 0;

Rückgabewert

Die neue Tiefe hyperkritischer Regionen. Höchstkritische Regionen sind wiedereintrittsfähig.

Hinweise

Der Scheduler muss außerordentlich sorgfältig darauf achten, welche Methoden er aufruft und welche Sperren er in solchen Regionen erwirbt. 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 sind reentrant.

IUMSThreadProxy::ExitHyperCriticalRegion-Methode

Wird aufgerufen, um einen hyperkritischen Bereich zu verlassen.

virtual int ExitHyperCriticalRegion() = 0;

Rückgabewert

Die neue Tiefe hyperkritischer Regionen. Höchstkritische Regionen sind wiedereintrittsfähig.

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 InsideHyperCriticalRegion zurückgegeben, wenn Code einen kritischen Bereich und anschließend eine hyperkritische Region betreten hat.

virtual CriticalRegionType GetCriticalRegionType() const = 0;

Rückgabewert

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

Siehe auch

Concurrency-Namespace
IUMSScheduler-Struktur