Concurrency Runtime
Die Concurrency Runtime für C++ hilft Ihnen beim Schreiben robuster, skalierbarer und reaktionsschneller paralleler Anwendungen. Es stellt eine höhere Abstraktionsebene bereit, sodass Sie die Infrastrukturdetails im Zusammenhang mit der Parallelität nicht verwalten müssen. Sie können mit ihm außerdem Planungsrichtlinien angeben, die den Servicequalitätsforderungen Ihrer Anwendungen entsprechen. Verwenden Sie diese Ressourcen für die ersten Schritte beim Arbeiten mit der Concurrency Runtime.
Referenzdokumentation finden Sie unter Referenz.
Tipp
Die Concurrency Runtime basiert stark auf C++11-Funktionen und übernimmt den moderneren C++-Stil. Weitere Informationen finden Sie unter "Willkommen zurück bei C++".
Auswählen von Concurrency Runtime-Funktionen
Artikel | Beschreibung |
---|---|
Übersicht | Erläutert die Bedeutung der Concurrency Runtime und beschreibt ihre wichtigsten Funktionen. |
Vergleich mit anderen Parallelitätsmodellen | Beschreibt die Concurrency Runtime im Vergleich mit anderen Parallelitätsmodellen, z. B. dem Windows-Threadpool und OpenMP, damit Sie das Parallelitätsmodell verwenden können, das die Anforderungen Ihrer Anwendungen am besten erfüllt. |
Migrieren von OpenMP zur Concurrency Runtime | Vergleicht OpenMP mit der Concurrency Runtime und enthält Beispiele, in denen das Migrieren von vorhandenem OpenMP-Code für die Verwendung der Concurrency Runtime gezeigt wird. |
Parallel Patterns Library (PPL) | Stellt die PPL vor, die parallele Schleifen, Aufgaben und parallele Container bereitstellt. |
Asynchrone Agents Library | Erläutert die Verwendung von asynchronen Agents und asynchroner Nachrichtenübergabe, um auf einfache Weise Datenfluss- und Pipelineaufgaben in die Anwendungen zu integrieren. |
Aufgabenplanung | Stellt den Aufgabenplaner vor, mit dem Sie die Leistung Ihrer Desktop-Apps, die die Concurrency Runtime verwenden, optimieren können. |
Aufgabenparallelität in der PPL
Datenparallelität in der PPL
Artikel | Beschreibung |
---|---|
Parallele Algorithmen Vorgehensweise: Schreiben einer parallel_for-Schleife Vorgehensweise: Schreiben einer parallel_for_each-Schleife Vorgehensweise: Paralleles Ausführen von Zuordnungs- und Reduzierungsoperationen |
Beschreibt parallel_for , parallel_for_each , parallel_invoke und andere parallele Algorithmen. Verwenden Sie parallele Algorithmen, um Probleme mit Datenparallelität im Zusammenhang mit Auflistungen von Daten zu lösen. |
Parallele Container und Objekte Vorgehensweise: Erhöhen der Effizienz mithilfe von parallelen Containern Vorgehensweise: Verbessern der Leistung mithilfe von combinable Vorgehensweise: Kombinieren von Gruppen mithilfe von combinable |
Beschreibt die combinable -Klasse sowie concurrent_vector , concurrent_queue , concurrent_unordered_map und andere parallele Container. Verwenden Sie parallele Container und Objekte, wenn Sie Container benötigen, die threadsicheren Zugriff auf die zugehörigen Elemente bieten. |
Bewährte Methoden in der Parallel Patterns Library Allgemein bewährte Methoden in der Concurrency Runtime |
Bietet Tipps und empfohlene Vorgehensweisen für das Arbeiten mit der PPL. |
Abbrechen von Aufgaben und parallelen Algorithmen
Artikel | Beschreibung |
---|---|
Abbruch in der PPL | Beschreibt die Rolle des Abbruchs in der PPL, einschließlich des Initiierens und Beantwortens von Abbruchanforderungen. |
Vorgehensweise: Verwenden eines Abbruchs zum Verlassen einer Parallel-Schleife Vorgehensweise: Verwenden der Ausnahmebehandlung zum Verlassen einer Parallel-Schleife |
Veranschaulicht zwei Möglichkeiten, parallele Arbeit mit Daten abzubrechen. |
Universelle Windows-Plattform-Apps
Artikel | Beschreibung |
---|---|
Erstellen von asynchronen Vorgängen in C++ für UWP-Apps | Beschreibt einige der wichtigsten Punkte, die Sie berücksichtigen sollten, wenn Sie die Parallelitätslaufzeit verwenden, um asynchrone Vorgänge in einer UWP-App zu erzeugen. |
Exemplarische Vorgehensweise: Verbinden von Verwendungsaufgaben und XML-HTTP-Anforderungen | Zeigt, wie PPL-Aufgaben mit den IXMLHTTPRequest2 und IXMLHTTPRequest2Callback Schnittstellen kombiniert werden, um HTTP GET- und POST-Anforderungen an einen Webdienst in einer UWP-App zu senden. |
Windows-Runtime-App-Beispiele | Enthält herunterladbare Codebeispiele und Demo-Apps für Windows-Runtime. |
Datenflussprogrammierung in der Asynchronous Agents Library
Ausnahmebehandlung und Debuggen
Artikel | Beschreibung |
---|---|
Ausnahmebehandlung | Beschreibt das Arbeiten mit Ausnahmen in der Concurrency Runtime. |
Diagnosetools für die parallele Ausführung | Erläutert, wie Sie die Feinabstimmung von Anwendungen ausführen und die Concurrency Runtime so effizient wie möglich nutzen. |
Optimieren der Leistung
Artikel | Beschreibung |
---|---|
Diagnosetools für die parallele Ausführung | Erläutert, wie Sie die Feinabstimmung von Anwendungen ausführen und die Concurrency Runtime so effizient wie möglich nutzen. |
Planerinstanzen Vorgehensweise: Verwalten einer Planerinstanz Planerrichtlinien Vorgehensweise: Angeben von bestimmten Planerrichtlinien Vorgehensweise: Erstellen von Agents, die bestimmte Planerrichtlinien verwenden |
Veranschaulicht das Arbeiten mit Planerinstanzen und Planerrichtlinien. Bei Desktop-Apps können Sie mit Planerrichtlinien bestimmten Arten von Arbeitslasten spezielle Regeln zuordnen. Beispielsweise können Sie eine Planerinstanz erstellen, um einige Aufgaben mit höherer Threadpriorität auszuführen und andere Aufgaben mit dem Standardplaner mit normaler Threadpriorität auszuführen. |
Planungsgruppen Vorgehensweise: Beeinflussen der Ausführungsreihenfolge mithilfe von Zeitplangruppen |
Veranschaulicht die Verwendung von Planungsgruppen, um verwandte Aufgaben zusammen zu gruppieren. Sie können beispielsweise einen hohen Grad an Lokalität zwischen verwandten Aufgaben anfordern, wenn es Vorteile bietet, dass diese Aufgaben auf demselben Prozessorknoten ausgeführt werden. |
Einfache Aufgaben | Erläutert, wie einfache Aufgaben hilfreich für das Erstellen von Arbeit sind, die keinen Lastenausgleich oder Abbruch erfordert, sowie für das Anpassen von vorhandenem Code für die Verwendung mit der Concurrency Runtime. |
Kontexte Vorgehensweise: Implementieren einer kooperativen Semaphore mithilfe der Context-Klasse Vorgehensweise: Verwenden der Überzeichnung zum Versetzen der Latenz |
Beschreibt, wie das Verhalten der Threads gesteuert wird, die von der Concurrency Runtime verwaltet werden. |
Speicherverwaltungsfunktionen Vorgehensweise: Verbessern der Arbeitsspeicherleistung mithilfe von Alloc und Free |
Beschreibt die Speicherverwaltungsfunktionen der Concurrency Runtime, die das parallele Reservieren und Freigeben von Arbeitsspeicher unterstützen. |
Weitere Ressourcen
Artikel | Beschreibung |
---|---|
Muster und Tipps für die asynchrone Programmierung in Hilo (Windows Store-Apps mit C++ und XAML) | Erfahren Sie, wie wir die Concurrency Runtime verwendet haben, um asynchrone Vorgänge in Hilo, einer Windows-Runtime-App mit C++ und XAML, zu implementieren. |
Parallel Programming in Native Code blog (Blog zum Thema paralleles Programmieren in nativem Code) | Bietet zusätzliche ausführliche Blogartikel zur parallelen Programmierung in der Concurrency Runtime. |
Parallel Computing in C++ and Native Code forum (Forum zum Thema paralleles Computing in C++ und nativem Code) | Ermöglicht Ihnen die Teilnahme an Communitydiskussionen über die Concurrency Runtime. |
Parallele Programmierung | Hier erfahren Sie mehr über das parallele Programmiermodell, das im .NET Framework verfügbar ist. |