CurrentScheduler-Klasse
Stellt eine Abstraktion für den aktuellen Planer dar, der dem aufrufenden Kontext zugeordnet ist.
Syntax
class CurrentScheduler;
Member
Öffentliche Methoden
Name | Beschreibung |
---|---|
Erstellen | Erstellt einen neuen Scheduler, dessen Verhalten durch den _Policy Parameter beschrieben wird, und fügt ihn an den aufrufenden Kontext an. Der neu erstellte Scheduler wird zum aktuellen Planer für den Anrufkontext. |
CreateScheduleGroup | Überladen. Erstellt eine neue Zeitplangruppe innerhalb des Schedulers, der dem aufrufenden Kontext zugeordnet ist. Die Version, die den Parameter _Placement verwendet, bewirkt, dass Aufgaben innerhalb der neu erstellten Zeitplangruppe auf die Ausführung an dem durch diesen Parameter angegebenen Speicherort verzerrt werden. |
Trennen | Trennt den aktuellen Planer vom Aufrufkontext und stellt den zuvor angefügten Planer als aktueller Planer wieder her, sofern vorhanden. Nachdem diese Methode zurückgegeben wurde, wird der aufrufende Kontext dann vom Scheduler verwaltet, der zuvor mithilfe der Methode oder Scheduler::Attach der CurrentScheduler::Create Methode an den Kontext angefügt wurde. |
Get | Gibt einen Zeiger auf den Scheduler zurück, der dem aufrufenden Kontext zugeordnet ist, der auch als aktueller Planer bezeichnet wird. |
GetNumberOfVirtualProcessors | Gibt die aktuelle Anzahl virtueller Prozessoren für den Scheduler zurück, der dem aufrufenden Kontext zugeordnet ist. |
GetPolicy | Gibt eine Kopie der Richtlinie zurück, mit der der aktuelle Zeitplan erstellt wurde. |
Id | Gibt einen eindeutigen Bezeichner für den aktuellen Zeitplan zurück. |
IsAvailableLocation | Bestimmt, ob ein bestimmter Speicherort für den aktuellen Zeitplan verfügbar ist. |
RegisterShutdownEvent | Bewirkt, dass das übergebene Windows-Ereignishandle im _ShutdownEvent Parameter signalisiert wird, wenn der mit dem aktuellen Kontext verknüpfte Planer heruntergefahren wird und sich selbst zerstört. Zu dem Zeitpunkt, zu dem das Ereignis signalisiert wird, ist alle für den Planer geplanten Arbeiten abgeschlossen. Mehrere Herunterfahren-Ereignisse können über diese Methode registriert werden. |
ScheduleTask | Überladen. Plant einen vorgang mit leichter Gewichtung innerhalb des Zeitplans, der dem Anrufkontext zugeordnet ist. Der Vorgang mit geringem Gewicht wird in einer von der Laufzeit festgelegten Zeitplangruppe platziert. Die Version, die den Parameter _Placement verwendet, bewirkt, dass die Aufgabe auf die Ausführung an dem angegebenen Speicherort voreingenommen wird. |
Hinweise
Wenn kein Scheduler (siehe Scheduler) mit dem aufrufenden Kontext verknüpft ist, führen viele Methoden innerhalb der CurrentScheduler
Klasse zu einer Anlage des Standardplaners des Prozesses. Dies kann auch bedeuten, dass der Standardplaner des Prozesses während eines solchen Anrufs erstellt wird.
Vererbungshierarchie
CurrentScheduler
Anforderungen
Kopfzeile: concrt.h
Namespace: Parallelität
Erzeugen
Erstellt einen neuen Scheduler, dessen Verhalten durch den _Policy
Parameter beschrieben wird, und fügt ihn an den aufrufenden Kontext an. Der neu erstellte Scheduler wird zum aktuellen Planer für den Anrufkontext.
static void __cdecl Create(const SchedulerPolicy& _Policy);
Parameter
_Politik
Die Schedulerrichtlinie, die das Verhalten des neu erstellten Zeitplans beschreibt.
Hinweise
Die Anlage des Schedulers an den aufrufenden Kontext platziert implizit eine Verweisanzahl auf den Scheduler.
Nachdem ein Scheduler mit der Create
Methode erstellt wurde, müssen Sie die CurrentScheduler::D etach-Methode irgendwann in Zukunft aufrufen, damit der Scheduler heruntergefahren werden kann.
Wenn diese Methode aus einem Kontext aufgerufen wird, der bereits einem anderen Planer zugeordnet ist, wird der vorhandene Planer als vorheriger Planer gespeichert, und der neu erstellte Scheduler wird zum aktuellen Planer. Wenn Sie die CurrentScheduler::Detach
Methode zu einem späteren Zeitpunkt aufrufen, wird der vorherige Planer als aktueller Planer wiederhergestellt.
Diese Methode kann eine Vielzahl von Ausnahmen auslösen, einschließlich scheduler_resource_allocation_error und invalid_scheduler_policy_value.
CreateScheduleGroup
Erstellt eine neue Zeitplangruppe innerhalb des Schedulers, der dem aufrufenden Kontext zugeordnet ist. Die Version, die den Parameter _Placement
verwendet, bewirkt, dass Aufgaben innerhalb der neu erstellten Zeitplangruppe auf die Ausführung an dem durch diesen Parameter angegebenen Speicherort verzerrt werden.
static ScheduleGroup* __cdecl CreateScheduleGroup();
static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);
Parameter
_Platzierung
Ein Verweis auf einen Ort, an dem die Vorgänge innerhalb der Terminplangruppe in Bezug auf die Ausführung verzerrt sind.
Rückgabewert
Ein Zeiger auf die neu erstellte Zeitplangruppe. Dieses ScheduleGroup
Objekt verfügt über eine anfängliche Referenzanzahl, die darauf platziert wird.
Hinweise
Diese Methode führt dazu, dass der Standardplaner des Prozesses erstellt und/oder an den aufrufenden Kontext angefügt wird, wenn derzeit dem aufrufenden Kontext kein Planer zugeordnet ist.
Sie müssen die Release-Methode für eine Zeitplangruppe aufrufen, wenn Sie die Planung der Arbeit abgeschlossen haben. Der Planer zerstört die Zeitplangruppe, wenn alle damit in die Warteschlange eingereihten Arbeiten abgeschlossen sind.
Beachten Sie, dass Sie, wenn Sie diesen Zeitplan explizit erstellt haben, alle Verweise auf Zeitplangruppen freigeben müssen, bevor Sie Ihre Referenz für den Zeitplaner freigeben, indem Sie den aktuellen Kontext daraus trennen.
Trennen
Trennt den aktuellen Planer vom Aufrufkontext und stellt den zuvor angefügten Planer als aktueller Planer wieder her, sofern vorhanden. Nachdem diese Methode zurückgegeben wurde, wird der aufrufende Kontext dann vom Scheduler verwaltet, der zuvor mithilfe der Methode oder Scheduler::Attach
der CurrentScheduler::Create
Methode an den Kontext angefügt wurde.
static void __cdecl Detach();
Hinweise
Die Detach
Methode entfernt implizit eine Verweisanzahl aus dem Scheduler.
Wenn kein Scheduler an den aufrufenden Kontext angefügt ist, führt das Aufrufen dieser Methode zu einer scheduler_not_attached Ausnahme, die ausgelöst wird.
Das Aufrufen dieser Methode aus einem kontextinternen und von einem Planer verwalteten Kontext oder einem Kontext, der mit einer anderen Methode als der Methode Scheduler::Attach oder CurrentScheduler::Create-Methoden verbunden wurde, führt zu einer improper_scheduler_detach Ausnahme, die ausgelöst wird.
Abrufen
Gibt einen Zeiger auf den Scheduler zurück, der dem aufrufenden Kontext zugeordnet ist, der auch als aktueller Planer bezeichnet wird.
static Scheduler* __cdecl Get();
Rückgabewert
Ein Zeiger auf den Scheduler, der dem aufrufenden Kontext (dem aktuellen Planer) zugeordnet ist.
Hinweise
Diese Methode führt dazu, dass der Standardplaner des Prozesses erstellt und/oder an den aufrufenden Kontext angefügt wird, wenn derzeit dem aufrufenden Kontext kein Planer zugeordnet ist. Für das Scheduler
von dieser Methode zurückgegebene Objekt wird kein zusätzlicher Verweis eingefügt.
GetNumberOfVirtualProcessors
Gibt die aktuelle Anzahl virtueller Prozessoren für den Scheduler zurück, der dem aufrufenden Kontext zugeordnet ist.
static unsigned int __cdecl GetNumberOfVirtualProcessors();
Rückgabewert
Wenn ein Planer dem Aufrufkontext zugeordnet ist, wird die aktuelle Anzahl der virtuellen Prozessoren für diesen Zeitplaner verwendet. andernfalls der Wert -1
.
Hinweise
Diese Methode führt nicht zu einer Scheduleranlage, wenn der aufrufende Kontext noch nicht einem Scheduler zugeordnet ist.
Der Rückgabewert dieser Methode ist ein sofortiges Sampling der Anzahl der virtuellen Prozessoren für den Scheduler, der dem aufrufenden Kontext zugeordnet ist. Dieser Wert kann veraltet sein, wenn er zurückgegeben wird.
GetPolicy
Gibt eine Kopie der Richtlinie zurück, mit der der aktuelle Zeitplan erstellt wurde.
static SchedulerPolicy __cdecl GetPolicy();
Rückgabewert
Eine Kopie der Richtlinie, mit der der aktuelle Zeitplan erstellt wurde.
Hinweise
Diese Methode führt dazu, dass der Standardplaner des Prozesses erstellt und/oder an den aufrufenden Kontext angefügt wird, wenn derzeit dem aufrufenden Kontext kein Planer zugeordnet ist.
Kennung
Gibt einen eindeutigen Bezeichner für den aktuellen Zeitplan zurück.
static unsigned int __cdecl Id();
Rückgabewert
Wenn ein Planer dem Aufrufkontext zugeordnet ist, ist ein eindeutiger Bezeichner für diesen Planer vorhanden; andernfalls der Wert -1
.
Hinweise
Diese Methode führt nicht zu einer Scheduleranlage, wenn der aufrufende Kontext noch nicht einem Scheduler zugeordnet ist.
IsAvailableLocation
Bestimmt, ob ein bestimmter Speicherort für den aktuellen Zeitplan verfügbar ist.
static bool __cdecl IsAvailableLocation(const location& _Placement);
Parameter
_Platzierung
Ein Verweis auf den Speicherort, um den aktuellen Zeitplan abzufragen.
Rückgabewert
Ein Hinweis darauf, ob der durch das _Placement
Argument angegebene Ort im aktuellen Zeitplan verfügbar ist.
Hinweise
Diese Methode führt nicht zu einer Scheduleranlage, wenn der aufrufende Kontext noch nicht einem Scheduler zugeordnet ist.
Beachten Sie, dass der Rückgabewert ein sofortiges Sampling ist, ob der angegebene Speicherort verfügbar ist. In Anwesenheit mehrerer Planer kann die dynamische Ressourcenverwaltung jederzeit Ressourcen von Planern hinzufügen oder wegnehmen. Sollte dies geschehen, kann der angegebene Standort die Verfügbarkeit ändern.
RegisterShutdownEvent
Bewirkt, dass das übergebene Windows-Ereignishandle im _ShutdownEvent
Parameter signalisiert wird, wenn der mit dem aktuellen Kontext verknüpfte Planer heruntergefahren wird und sich selbst zerstört. Zu dem Zeitpunkt, zu dem das Ereignis signalisiert wird, ist alle für den Planer geplanten Arbeiten abgeschlossen. Mehrere Herunterfahren-Ereignisse können über diese Methode registriert werden.
static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);
Parameter
_ShutdownEvent
Ein Handle zu einem Windows-Ereignisobjekt, das von der Laufzeit signalisiert wird, wenn der mit dem aktuellen Kontext verknüpfte Scheduler heruntergefahren und zerstört.
Hinweise
Wenn kein Scheduler an den aufrufenden Kontext angefügt ist, führt das Aufrufen dieser Methode zu einer scheduler_not_attached Ausnahme, die ausgelöst wird.
ScheduleTask
Plant einen vorgang mit leichter Gewichtung innerhalb des Zeitplans, der dem Anrufkontext zugeordnet ist. Der Vorgang mit geringem Gewicht wird in einer von der Laufzeit festgelegten Zeitplangruppe platziert. Die Version, die den Parameter _Placement
verwendet, bewirkt, dass die Aufgabe auf die Ausführung an dem angegebenen Speicherort voreingenommen wird.
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data);
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data,
location& _Placement);
Parameter
_Proc
Ein Zeiger auf die Funktion, die ausgeführt werden soll, um den Textkörper der Leichtgewichtsaufgabe auszuführen.
_Daten
Ein leerer Zeiger auf die Daten, die als Parameter an den Textkörper der Aufgabe übergeben werden.
_Platzierung
Ein Verweis auf einen Ort, an dem der Vorgang mit geringem Gewicht auf die Ausführung ausgerichtet ist.
Hinweise
Diese Methode führt dazu, dass der Standardplaner des Prozesses erstellt und/oder an den aufrufenden Kontext angefügt wird, wenn derzeit dem aufrufenden Kontext kein Planer zugeordnet ist.
Siehe auch
Concurrency-Namespace
Scheduler-Klasse
PolicyElementKey
Aufgabenplanung