Parallel Extensions

Parallel Extensions
Schichtenarchitektur des .NET Frameworks

Bei den Parallel Extensions (parallele Erweiterungen), auch bekannt als Parallel Framework Extensions (PFX), handelt es sich um eine Bibliothek zur Unterstützung der parallelen Programmierung bei Verwendung des Managed Code des Microsoft .NET-Frameworks. Die Parallel Extensions bestehen grundsätzlich aus zwei Teilen: Parallel LINQ (PLINQ) und der Task Parallel Library (TPL).[1][2] Die Bibliothek verfügt über verschiedene Datentypen (referenzierte Objekte) und Funktionen zur Verwaltung und Steuerung von parallelen Prozessen während der Laufzeit.[3] Die Bibliothek erschien erstmalig (als CTP) am 29. November 29 2007[4] und wurde im Dezember 2007 sowie im Juni 2008 aktualisiert. [3] Seit der Version 4.0 des .NET-Frameworks sind die Parallel Extensions fester Bestandteil des Frameworks und können in allen .NET-Sprachen verwendet werden. [5]

Inhaltsverzeichnis

Parallel LINQ

Parallel LINQ (PLINQ) bietet die Möglichkeit, LINQ-Abfragen parallel auszuführen, sofern es gegenüber einer sequentiellen Abfrage einen Zeitvorteil (SpeedUp) schaffen kann. Dabei werden entweder mehrere LINQ-Abfragen parallel aufgerufen oder die Datenmenge selbst parallel zusammen getragen. Das Ziel von PLINQ dabei ist, die Rechenzeit für die Abfragen zu minimieren. In der Regel funktioniert die Parallelisierung mit allen Abfragearten. PLINQ kann über das Interface IParallelEnumerable verwendet werden. Intern verwendet PLINQ die (TPL) für die Parallelisierung.[3][6]

Task Parallel Library

Die Task Parallel Library (TPL) ist die Kernkomponente für die Parallelisierung innerhalb des .NET-Frameworks.[7] Die TPL erkennt mögliche parallel auszuführende Aufgaben (Tasks) mittels bestimmter Code-Abschnitte (z.B. Schleifen wie For oder ForEach). Die TPL kann des Weiteren für andere Tasks erzwungen werden. Der Entwickler selbst muss sich weder um die Verwaltung der einzelnen Threads noch um die Anzahl der Prozessorkerne kümmern, da dies vollständig von der TPL verwaltet wird.[2]

Die TPL ermöglicht es außerdem, bestimmte Bereiche als Task oder Future zu maskieren. Ein Task ist ein Abschnitt, der unabhängig (und somit parallel) vom Rest des Programms ausgeführt werden kann. Die TPL erstellt für dieses einen eigenen Thread, welcher jedoch von der TPL selbst verwaltet wird und somit keinen unnötigen Overhead (wie er sonst benötigt wird) erzeugt.

Als Future wird ein Task bezeichnet, der ein Ergebnis zurückliefert, welches in einem parallelen Prozess berechnet wurde. Das Ergebnis wird dann bei Fertigstellung vorgehalten, bis es abgerufen wird.[2] Sollte das Ergebnis vor Fertigstellung abgefragt werden, wird der anfragende Thread angehalten, bis das Ergebnis berechnet wurde.[7]

Die TPL kann über die Parallel-Klasse verwendet werden. Diese Klasse stellt drei statische Methoden zur Verfügung:

Parallel.Invoke
Führt (parallel) ein Array von Delegaten aus und wartet bis sie berechnet wurden.
Parallel.For
Entspricht der for-Schleife in C#, jedoch mit paralleler Ausführung.
Parallel.ForEach
Entspricht der foreach-Schleife in C#, jedoch mit paralleler Ausführung.

Architektur

Das Konzept der Parallel Extensions in .NET basiert darauf, bestimmte Code-Abschnitte in einen Task einzuteilen. Diese Task repräsentiert eine von anderen Teilen des Programms möglichst unabhängige Aufgabe. Sowohl PLINQ als auch die TPL API stellen Methoden zur Verfügung um entsprechende Tasks zu definieren. PLINQ erstellt automatisiert Tasks aus den Abfragen, während die TPL aus den o.g. Schleifen Tasks generiert.

Siehe auch

Einzelnachweise

  1. Programming in the Age of Concurrency: Concurrent Programming with PFX. Abgerufen am 16. Oktober 2007.
  2. a b c MSDN Magazine: Task Parallel Library. Abgerufen am 16. Oktober 2007.
  3. a b c June 2008 CTP - Parallel Extensions to the .NET FX. Abgerufen am 6. August 2008.
  4. Parallel Extensions to the .NET FX CTP. Abgerufen am 30. November 2007.
  5. Parallel Programming and the .NET Framework 4.0. Abgerufen am 25. Januar 2009.
  6. More powerful aggregations in PLINQ. Abgerufen am 6. August 2008.
  7. a b Joe Duffy: Concurrent Programming on Windows, S. "887–929" 2009, ISBN "032143482X"

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Parallel FX Library — (PFX) is a managed concurrency library being developed by a collaboration between Microsoft Research and the CLR team at Microsoft for inclusion with a future revision of the .NET Framework. It is composed of two parts: Parallel LINQ (PLINQ) and… …   Wikipedia

  • Parallel ATA — ATA connector on the right, with two motherboard ATA sockets on the left. Type …   Wikipedia

  • Parallel C — may refer to: * Unified Parallel C, an extension of the C programming language designed for high performance computing on large scale parallel machines * an unimplemented programming language that influenced the design of C* * C for the… …   Wikipedia

  • Parallel computing — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Parallel SCSI — Centronics 50 SCSI plug Parallel SCSI (formally, SCSI Parallel Interface, or SPI) is one of the interface implementations in the SCSI family. In addition to being a data bus, SPI is a parallel electrical bus: There is one set of electrical… …   Wikipedia

  • Parallel programming model — A parallel programming model is a set of software technologies to express parallel algorithms and match applications with the underlying parallel systems. It encloses the areas of applications, programming languages, compilers, libraries,… …   Wikipedia

  • Parallel-Schnittstelle — IEEE 1284 Druckerkabel (Typ AB) Der veraltende IEEE 1284 Standard definiert eine parallele Schnittstelle zur bidirektionalen Übertragung von Daten zwischen PCs und unterschiedlichen Peripheriegeräten (Drucker, Fax, Scanner, Laufwerke etc.). Der… …   Deutsch Wikipedia

  • Managed Extensions for C++ — or just Managed C++ is a now deprecated Microsoft set of deviations from C++, including grammatical and syntactic extensions, keywords and attributes, to bring the C++ syntax and language to the .NET Framework. These extensions allowed C++ code… …   Wikipedia

  • Unified Parallel C — (UPC) is an extension of the C programming language designed for high performance computing on large scale parallel machines, including those with a common global address space (SMP and NUMA) and those with distributed memory (eg. clusters). The… …   Wikipedia

  • Multimedia Acceleration eXtensions — The Multimedia Acceleration eXtensions or MAX are instruction set extensions to the Hewlett Packard PA RISC instruction set architecture (ISA). MAX was developed to improve the performance of multimedia applications that were becoming more… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”