Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
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.