Freigeben über


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 (Concurrency Runtime).

Tipp

Die Concurrency Runtime basiert stark auf C++11-Funktionen und übernimmt den moderneren C++-Stil.Weitere Informationen finden Sie Willkommen zurück bei C++ (Modern C++).

Auswählen von Concurrency Runtime-Funktionen

Übersicht über die Concurrency Runtime

Erläutert die Bedeutung der Concurrency Runtime und beschreibt ihre wichtigsten Funktionen.

Concurrency Runtime im Vergleich zu 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.

Asynchronous 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.

Taskplaner (Concurrency Runtime)

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

Aufgabenparallelität (Concurrency Runtime)

Gewusst wie: Verwenden von parallel_invoke zum Schreiben einer Runtime für paralleles Sortieren

Gewusst wie: Ausführen von parallelen Vorgängen mithilfe von parallel_invoke

Gewusst wie: Erstellen einer Aufgabe, die nach einer Verzögerung abgeschlossen wird

Beschreibt Aufgaben und Aufgabengruppen, mit denen Sie asynchronen Code schreiben und parallele Arbeit in kleinere Teile zerlegen können.

Exemplarische Vorgehensweise: Implementieren von Futures

Veranschaulicht, wie Concurrency Runtime-Funktionen kombiniert werden, um den Funktionsumfang zu erweitern.

Exemplarische Vorgehensweise: Entfernen von Arbeit aus einem Benutzeroberflächenthread

Veranschaulicht, wie die Arbeit, die vom UI-Thread in einer MFC-Anwendung ausgeführt wird, in einen Arbeitsthread verschoben wird.

Empfohlene Vorgehensweisen in der Parallel Patterns Library

Allgemein empfohlene Vorgehensweisen in der Concurrency Runtime

Bietet Tipps und empfohlene Vorgehensweisen für das Arbeiten mit der PPL.

Datenparallelität in der PPL

Parallele Algorithmen

Gewusst wie: Schreiben einer parallel_for-Schleife

Gewusst wie: Schreiben einer parallel_for_each-Schleife

Gewusst wie: 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

Gewusst wie: Erhöhen der Effizienz mithilfe von parallelen Containern

Gewusst wie: Verbessern der Leistung mithilfe von combinable

Gewusst wie: 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.

Empfohlene Vorgehensweisen in der Parallel Patterns Library

Allgemein empfohlene Vorgehensweisen in der Concurrency Runtime

Bietet Tipps und empfohlene Vorgehensweisen für das Arbeiten mit der PPL.

Abbrechen von Aufgaben und parallelen Algorithmen

Abbruch in der PPL

Beschreibt die Rolle des Abbruchs in der PPL, einschließlich des Initiierens und Beantwortens von Abbruchanforderungen.

Gewusst wie: Verwenden eines Abbruchs zum Verlassen einer Parallel-Schleife

Gewusst wie: Verwenden der Ausnahmebehandlung zum Verlassen einer Parallel-Schleife

Veranschaulicht zwei Möglichkeiten, parallele Arbeit mit Daten abzubrechen.

Windows Store-Apps

Erstellen von asynchronen Vorgängen in C++ für Windows Store-Apps

Beschreibt einige der wichtigsten zu beachtenden Punkte für das Verwenden der Concurrency Runtime für asynchrone Vorgänge in einer Windows Store-App.

Exemplarische Vorgehensweise: Verbinden von Verwendungsaufgaben und XML-HTTP-Anforderungen

Zeigt, wie PPL-Aufgaben mit der IXMLHTTPRequest2- und der IXMLHTTPRequest2Callback-Schnittstelle kombiniert werden, um GET- und POST-HTTP-Anforderungen an einen Webdienst in einer Windows Store-App zu senden.

Beispiele für Windows Store-Apps

Enthält herunterladbare Codebeispiele und Demo-Apps für Windows 8. Die C++-Beispiele verwenden Concurrency Runtime-Funktionen wie PPL-Aufgaben, um Daten im Hintergrund zu verarbeiten und so die Reaktionsfähigkeit aufrechtzuerhalten.

Datenflussprogrammierung in der Asynchronous Agents Library

Asynchrone Agents

Asynchrone Nachrichtenblöcke

Funktionen zum Übergeben von Meldungen

Gewusst wie: Implementieren verschiedener Producer-Consumer-Muster

Gewusst wie: Bereitstellen von Arbeitsfunktionen für die call- und transformer-Klassen

Gewusst wie: Verwenden von transformer in einer Datenpipeline

Gewusst wie: Auswählen von abgeschlossenen Aufgaben

Gewusst wie: Senden einer Nachricht in regelmäßigen Intervallen

Gewusst wie: Verwenden eines Nachrichtenblockfilters

Beschreibt asynchrone Agents, Nachrichtenblöcke und Nachrichtenübergabefunktionen, bei denen es sich um die Bausteine zum Durchführen von Datenflussvorgängen in der Concurrency Runtime handelt.

Exemplarische Vorgehensweise: Erstellen einer agentbasierten Anwendung

Exemplarische Vorgehensweise: Erstellen eines Datenfluss-Agent

Veranschaulicht die Erstellung von einfachen auf Agents basierenden Anwendungen.

Exemplarische Vorgehensweise: Erstellen eines Bildverarbeitungsnetzwerks

Veranschaulicht das Erstellen eines Netzwerks asynchroner Nachrichtenblöcke für die Bildverarbeitung.

Exemplarische Vorgehensweise: Verhindern von Deadlocks mit join

Veranschaulicht anhand des Philosophenproblems, wie sich mit der Concurrency Runtime Deadlocks in der Anwendung verhindern lassen.

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Nachrichtenblocks

Veranschaulicht, wie ein benutzerdefinierter Nachrichtenblocktyp erstellt wird, um eingehende Nachrichten nach Priorität zu sortieren.

Empfohlene Vorgehensweisen in der Asynchronous Agents Library

Allgemein empfohlene Vorgehensweisen in der Concurrency Runtime

Bietet Tipps und empfohlene Vorgehensweisen für das Arbeiten mit Agents.

Ausnahmebehandlung und Debuggen

Ausnahmebehandlung in der Concurrency Runtime

Beschreibt das Arbeiten mit Ausnahmen in der Concurrency Runtime.

Diagnosetools für die parallele Ausführung (Concurrency Runtime)

Erläutert, wie Sie die Feinabstimmung von Anwendungen ausführen und die Concurrency Runtime so effizient wie möglich nutzen.

Optimieren der Leistung

Diagnosetools für die parallele Ausführung (Concurrency Runtime)

Erläutert, wie Sie die Feinabstimmung von Anwendungen ausführen und die Concurrency Runtime so effizient wie möglich nutzen.

Planerinstanzen

Gewusst wie: Verwalten einer Planerinstanz

Planerrichtlinien

Gewusst wie: Angeben von bestimmten Planerrichtlinien

Gewusst wie: 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

Gewusst wie: 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

Gewusst wie: Implementieren einer kooperativen Semaphore mithilfe der Context-Klasse

Gewusst wie: Verwenden der Überzeichnung zum Kompensieren der Latenz

Beschreibt, wie das Verhalten der Threads gesteuert wird, die von der Concurrency Runtime verwaltet werden.

Speicherverwaltungsfunktionen

Gewusst wie: Verbessern der Arbeitsspeicherleistung mithilfe von Alloc und Free

Beschreibt die Speicherverwaltungsfunktionen der Concurrency Runtime, die das parallele Reservieren und Freigeben von Arbeitsspeicher unterstützen.

Zusätzliche Ressourcen

Muster und Tips zur asynchronen Programmierung in Hilo (Windows Store-Apps mit C++ und XAML)

Erfahren Sie, wie wir mit der Concurrency Runtime asynchrone Vorgänge in Hilo, einer Windows Store-App mit C++ und XAML, implementiert haben.

Code samples for the Concurrency Runtime and Parallel Pattern Library in Visual Studio 2010

Bietet Beispielanwendungen und Hilfsprogramme zur Veranschaulichung der Concurrency Runtime.

Blog "Parallele Programmierung in systemeigenem Code

Bietet zusätzliche ausführliche Blogartikel zur parallelen Programmierung in der Concurrency Runtime.

Forum "Paralleles Computing in C++ und systemeigenem Code"

Ermöglicht Ihnen die Teilnahme an Communitydiskussionen über die Concurrency Runtime.

Parallele Programmierung in .NET Framework

Erläutert das Modell der parallelen Programmierung, das in .NET Framework verfügbar ist.

Siehe auch

Weitere Ressourcen

Referenz (Concurrency Runtime)