Taskplaner (Concurrency Runtime)

Die Themen in diesem Teil der Dokumentation beschreiben die wichtigsten Features des Taskplaners der Concurrency Runtime. Der Taskplaner ist nützlich, wenn Sie die Leistung Ihres vorhandenen Codes optimieren möchten, der die Parallelitätslaufzeit verwendet.

Wichtig

Der Taskplaner ist in einer Universelle Windows-Plattform-App (UWP) nicht verfügbar. Weitere Informationen finden Sie unter Erstellen asynchroner Vorgänge in C++ für UWP-Apps.

In Visual Studio 2015 und höher verwenden die Parallelitätsklasse::task-Klasse und verwandte Typen in ppltasks.h den Windows ThreadPool als Zeitplan. Dieses Thema gilt nicht mehr für Typen, die in „ppltasks.h“ definiert sind. Parallele Algorithmen, wie z. B. „parallel_for“, verwenden weiterhin die Concurrency Runtime als standardmäßigen Planer.

Tipp

Die Concurrency Runtime stellt einen Standardplaner bereit. Sie müssen daher keinen in Ihrer Anwendung erstellen. Da der Aufgabenplaner Ihnen dabei hilft, die Leistung Ihrer Anwendungen zu optimieren, empfehlen wir, mit der Parallel Patterns Library (PPL) oder der asynchronen Agents-Bibliothek zu beginnen, wenn Sie mit der Parallelitätslaufzeit noch nicht vertraut sind.

Der Taskplaner plant und koordiniert die Aufgaben zur Laufzeit. Eine Aufgabe ist eine Arbeitseinheit, die einen bestimmten Auftrag ausführt. Eine Aufgabe kann in der Regel parallel mit anderen Aufgaben ausgeführt werden. Die Arbeit, die von Aufgabengruppenelementen ausgeführt wird, parallele Algorithmen und asynchrone Agents sind Beispiele für Aufgaben.

Der Aufgabenplaner verwaltet die Details, die sich auf die effiziente Planung von Aufgaben auf Computern mit mehreren Computerressourcen beziehen. Der Taskplaner verwendet außerdem die neuesten Features des zugrunde liegenden Betriebssystems. Aus diesem Grund skalieren und verbessern Anwendungen, die die Concurrency Runtime automatisch verwenden, jede Hardware, die über erweiterte Funktionen verfügt.

Im Vergleich zu anderen Parallelitätsmodellen werden die Unterschiede zwischen präemptiven und kooperativen Planungsmechanismen beschrieben. Der Aufgabenplaner verwendet die kooperative Planung und einen Arbeitsübernahmealgorithmus zusammen mit dem präemptiven Planer des Betriebssystems, um eine maximale Nutzung der Verarbeitungsressourcen zu erreichen.

Die Concurrency Runtime stellt einen Standardplaner bereit, sodass Sie keine Infrastrukturdetails verwalten müssen. Daher verwenden Sie den Taskplaner in der Regel nicht direkt. Um die Qualitätsanforderungen Ihrer Anwendung zu erfüllen, können Sie mit dem Taskplaner jedoch auch Ihre eigenen Planungsrichtlinien bereitstellen oder Planern bestimmte Aufgaben zuordnen. Nehmen wir beispielsweise an, Sie haben eine parallele Sortierungsroutine, die nicht auf mehr als vier Prozessoren skaliert werden kann. Sie können Schedulerrichtlinien verwenden, um einen Planer zu erstellen, der nicht mehr als vier gleichzeitige Vorgänge generiert. Wenn Sie die Sortierungsroutine auf diesem Planer ausführen, können andere aktive Planer die restlichen Verarbeitungsressourcen verwenden.

Titel Beschreibung
Planerinstanzen Beschreibt Planerinstanzen und die Verwendung der concurrency::Scheduler- und concurrency::CurrentScheduler-Klassen für deren Verwaltung. Verwenden Sie Planerinstanzen, wenn Sie explizite Planungsrichtlinien bestimmten Arten von Arbeitslasten zuordnen möchten.
Planerrichtlinien Beschreibt die Rolle von Planerrichtlinien. Mithilfe von Planerrichtlinien können Sie die Strategie festlegen, die der Planer zum Verwalten von Aufgaben verwendet.
Planungsgruppen Beschreibt die Rolle von Planungsgruppen. Verwenden Sie Planungsgruppen, wenn Sie ein hohes Maß an Lokalität zwischen den Aufgaben benötigen. Dies ist zum Beispiel dann der Fall, wenn es für eine Gruppe verwandter Aufgaben vorteilhaft ist, auf dem gleichen Prozessorknoten ausgeführt zu werden.
Einfache Aufgaben Beschreibt die Rolle einfacher Aufgaben. Einfache Aufgaben sind nützlich, wenn Sie vorhandenen Code anpassen, um die Planungsfunktionalität der Concurrency Runtime zu verwenden.
Kontexte Beschreibt die Rolle von Kontexten, die concurrency::wait-Funktion und die concurrency::Context-Klasse. Verwenden Sie diese Funktion, wenn Sie steuern müssen, wann Kontexte blockieren, die Blockierung aufheben oder nachgeben, oder wenn Sie die Überzeichnung in der Anwendung aktivieren möchten.
Speicherverwaltungsfunktionen Beschreibt die concurrency::Alloc- und concurrency::Free-Funktionen. Diese Funktionen können die Leistung des Arbeitsspeichers verbessern, indem sie Arbeitsspeicher parallel zuweisen und freigeben.
Vergleich mit anderen Parallelitätsmodellen Beschreibt die Unterschiede zwischen präemptiven und kooperativen Planungsmechanismen.
Parallel Patterns Library (PPL) Beschreibt, wie Sie verschiedene parallele Muster, z. B. parallele Algorithmen, in Anwendungen verwenden können.
Asynchrone Agents Library Beschreibt, wie Sie asynchrone Agents in Ihren Anwendungen verwenden.
Concurrency Runtime Beschreibt die Concurrency Runtime, die die parallele Programmierung vereinfacht, und stellt Links zu verwandten Themen bereit.