ScheduleGroup-Klasse
Stellt die Abstraktion für eine Planungsgruppe dar. In Planungsgruppen werden Sätze verwandter Arbeitsaufgaben organisiert, die von einer gemeinsamen Planung profitieren. Die kann entweder zeitlich durch das Ausführen einer anderen Aufgabe in der gleichen Gruppe vor dem Wechsel in eine andere Gruppe, oder räumlich durch das Ausführen mehrerer Elemente innerhalb der gleichen Gruppe auf dem gleichen NUMA-Knoten oder physischem Socket geschehen.
Syntax
class ScheduleGroup;
Member
Geschützte Konstruktoren
Name | Beschreibung |
---|---|
~ScheduleGroup Destructor |
Öffentliche Methoden
Name | Beschreibung |
---|---|
Id | Gibt einen Bezeichner für die Planungsgruppe zurück, der innerhalb des Planers eindeutig ist, zu dem die Gruppe gehört. |
Referenz | Inkrementiert den Verweiszähler dieser Planergruppe. |
Release | Dekrementiert den Verweiszähler dieser Planergruppe. |
ScheduleTask | Plant eine einfache Aufgabe innerhalb der Planungsgruppe. |
Vererbungshierarchie
ScheduleGroup
Anforderungen
Kopfzeile: concrt.h
Namespace: Parallelität
Kennung
Gibt einen Bezeichner für die Planungsgruppe zurück, der innerhalb des Planers eindeutig ist, zu dem die Gruppe gehört.
virtual unsigned int Id() const = 0;
Rückgabewert
Ein Bezeichner für die Zeitplangruppe, die innerhalb des Schedulers eindeutig ist, zu dem die Gruppe gehört.
operator delete
Ein ScheduleGroup
Objekt wird intern durch die Laufzeit zerstört, wenn alle externen Verweise darauf freigegeben werden. Sie kann nicht explizit gelöscht werden.
void operator delete(
void* _PObject);
void operator delete(
void* _PObject,
int,
const char *,
int);
Parameter
_PObject
Ein Zeiger auf das zu löschende Objekt.
Verweis
Inkrementiert den Verweiszähler dieser Planergruppe.
virtual unsigned int Reference() = 0;
Rückgabewert
Die neu inkrementierte Referenzanzahl.
Hinweise
Dies wird in der Regel verwendet, um die Lebensdauer der Zeitplangruppe für die Komposition zu verwalten. Wenn die Referenzanzahl einer Zeitplangruppe auf Null fällt, wird die Zeitplangruppe von der Laufzeit gelöscht. Eine Mit der CurrentScheduler::CreateScheduleGroup-Methode erstellte Zeitplangruppe oder die Scheduler::CreateScheduleGroup-Methode beginnt mit einer Verweisanzahl von 1.
Release
Dekrementiert den Verweiszähler dieser Planergruppe.
virtual unsigned int Release() = 0;
Rückgabewert
Die neu erhöhte Bezugsanzahl.
Hinweise
Dies wird in der Regel verwendet, um die Lebensdauer der Zeitplangruppe für die Komposition zu verwalten. Wenn die Referenzanzahl einer Zeitplangruppe auf Null fällt, wird die Zeitplangruppe von der Laufzeit gelöscht. Nachdem Sie die Release
Methode aufgerufen haben, um die Anzahl der Erstellungsreferenzen und alle zusätzlichen Verweise, die mit der Reference
Methode platziert wurden, zu entfernen, können Sie die Zeitplangruppe nicht weiter verwenden. Dies führt zu nicht definierten Verhaltensweisen.
Eine Zeitplangruppe ist einer bestimmten Schedulerinstanz zugeordnet. Sie müssen sicherstellen, dass alle Verweise auf die Zeitplangruppe freigegeben werden, bevor alle Verweise auf den Planer freigegeben werden, da letzteres dazu führen kann, dass der Planer zerstört wird. Andernfalls führt dies zu einem nicht definierten Verhalten.
~ScheduleGroup
virtual ~ScheduleGroup();
ScheduleTask
Plant eine einfache Aufgabe innerhalb der Planungsgruppe.
virtual void ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data) = 0;
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.
Hinweise
Durch aufrufen der ScheduleTask
Methode wird implizit eine Verweisanzahl auf die Zeitplangruppe platziert, die nach ausführung der Aufgabe von der Laufzeit zu einem geeigneten Zeitpunkt entfernt wird.
Siehe auch
Concurrency-Namespace
CurrentScheduler-Klasse
Scheduler-Klasse
Aufgabenplanung