Freigeben über


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