Parallele Programmierung in .NETParallel Programming in .NET

Viele Personalcomputer und Arbeitsstationen verfügen über mehrere CPU-Kerne, die die gleichzeitige Ausführung mehrerer Threads ermöglichen.Many personal computers and workstations have multiple CPU cores that enable multiple threads to be executed simultaneously. Um die Hardware nutzen zu können, kann der Code parallelisiert werden, um die Arbeit über mehrere Prozessoren zu verteilen.To take advantage of the hardware, you can parallelize your code to distribute work across multiple processors.

Früher erforderte die Parallelisierung Änderungen von Threads und Sperren auf niedriger Ebene.In the past, parallelization required low-level manipulation of threads and locks. Visual Studio und .NET Framework verbessern die Unterstützung für die parallele Programmierung, indem sie eine Laufzeit, Klassenbibliothekstypen und Diagnosetools bereitstellen.Visual Studio and the .NET Framework enhance support for parallel programming by providing a runtime, class library types, and diagnostic tools. Diese Features, die in .NET Framework 4 eingeführt wurden, vereinfachen die parallele Entwicklung.These features, which were introduced with the .NET Framework 4, simplify parallel development. Sie können effizienten, differenzierten und skalierbaren parallelen Code in einer natürlichen Sprache schreiben, ohne direkt mit Threads oder dem Threadpool arbeiten zu müssen.You can write efficient, fine-grained, and scalable parallel code in a natural idiom without having to work directly with threads or the thread pool.

Die folgende Abbildung zeigt eine allgemeine Übersicht der parallelen Programmierarchitektur in .NET Framework:The following illustration provides a high-level overview of the parallel programming architecture in the .NET Framework:

.NET-Architektur für die parallele Programmierung

TechnologieTechnology BeschreibungDescription
Task Parallel Library (TPL)Task Parallel Library (TPL) Stellt eine Dokumentation für die System.Threading.Tasks.Parallel-Klasse, die parallele Versionen einer For-Schleife und einer ForEach-Schleife einschließt, sowie für die System.Threading.Tasks.Task-Klasse bereit. Dies ist die bevorzugte Methode, um asynchrone Vorgänge auszudrücken.Provides documentation for the System.Threading.Tasks.Parallel class, which includes parallel versions of For and ForEach loops, and also for the System.Threading.Tasks.Task class, which represents the preferred way to express asynchronous operations.
Parallel LINQ (PLINQ) (Paralleles LINQ (PLINQ))Parallel LINQ (PLINQ) Eine parallele Implementierung von LINQ to Objects, die die Leistung in vielen Szenarien deutlich verbessert.A parallel implementation of LINQ to Objects that significantly improves performance in many scenarios.
Datenstrukturen für die parallele ProgrammierungData Structures for Parallel Programming Stellt Links zu Dokumentationen über threadsichere Auflistungsklassen, einfache Synchronisierungstypen und Typen für verzögerte Initialisierung bereit.Provides links to documentation for thread-safe collection classes, lightweight synchronization types, and types for lazy initialization.
Diagnosetools für die parallele AusführungParallel Diagnostic Tools Stellt Links zu Dokumentation für Visual Studio-Debuggerfenster für Aufgaben und parallele Stapel sowie für Concurrency Visualizer bereit.Provides links to documentation for Visual Studio debugger windows for tasks and parallel stacks, and for the Concurrency Visualizer.
Benutzerdefinierte Partitionierer für PLINQ und TPLCustom Partitioners for PLINQ and TPL Beschreibt, wie Partitionierer funktionieren und wie die Standardpartitionierer konfiguriert bzw. wie ein neuer Partitionierer erstellt wird.Describes how partitioners work and how to configure the default partitioners or create a new partitioner.
TaskplanerTask Schedulers Beschreibt, wie Planer funktionieren und wie die Standardplaner konfiguriert werden.Describes how schedulers work and how the default schedulers may be configured.
Lambdaausdrücke in PLINQ und TPLLambda Expressions in PLINQ and TPL Bietet einen kurzen Überblick über Lambaausdrücke in C# und Visual Basic und zeigt, wie sie in PLINQ und der Task Parallel Library verwendet werden.Provides a brief overview of lambda expressions in C# and Visual Basic, and shows how they are used in PLINQ and the Task Parallel Library.
Weitere InformationenFor Further Reading Stellt Links zu zusätzlichen Informationen und Beispielressourcen für die parallele Programmierung in .NET Framework bereit.Provides links to additional information and sample resources for parallel programming in .NET.

Siehe auchSee also