Freigeben über


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

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.

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.

Id

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