Parallele Programmierung mit PLINQ und .NET 4.0

Mit Hilfe der bei .NET 4.0 integrierten Task Parallel Library und deren Erweiterungsmethoden lassen sich auch LINQ-Abfragen einfach parallel ausführen. Gerade in diesem Bereich dürfte sich der Umstand, dass eine Abfrage nicht mehr nur auf einem, sondern auf zwei oder mehr Kernen gleichzeitig ausgeführt wird, vorteilhaft auswirken.

    

» Von Peter Monadiemi, 09.03.2010 15:12.

von Marc André Zhou

Die Abfragesprache Language Integrated Query (LINQ) war eine der wichtigsten Neuerungen bei .NET 3.5. LINQ bietet eine mächtige Abfragesyntax, die direkt in den Quellcode eingegeben wird, und mit der sich beliebige Collections typisiert abfragen lassen. Mit .NET 4.0 wird LINQ um die Möglichkeit erweitert, nahezu jede LINQ-Abfrage auch parallel auszuführen zu können. Die Grundlage ist die PLINQ Execution Engine (Abbildung 1), die auf der ebenfalls mit .NET 4.0 neu eingeführten Task Parallel Library basiert.

PLINQ besteht aus vier Teilen:

1) Query Analysis: Analyse der Abfrage
2) Data Partitionierung: Algorithmen zur Aufteilung der Datenmenge
3) Operator Type: Abfrage-Operatoren
4) Merging: Zusammenführung der Ergebnisse

Das PLINQ-Programmiermodell ist relativ simpel, die Syntax von LINQ bleibt dabei vollständig erhalten. PLINQ basiert wie LINQ auf Erweiterungsmethoden (Extension Methods), die von der IEnumerable-Schnittstelle stammen. PLINQ bringt mit ParallelEnumerable eine neue Schnittstelle mit, welche die bereits vorhandenen LINQ-Erweiterungsmethoden noch einmal erweitert.

Listing 1 veranschaulicht den Umgang mit der AsParallel-Erweiterungsmethode.

Listing 1: Paralleles LINQ mit der AsParallel-Methode
static void ListCustomers()
{
var Customers = GetCustomers();
var Orders = GetOrders();
var result = from customer in Customers.AsParallel()
join order in Orders.AsParallel()
on customer.CustomerID equals order.CustomerID
select customer;
foreach (var item in result)
Console.WriteLine("Customer: {0}", item.CustomerName);
}



 


Abbildung 1: Die PLINQ Execution Engine führt LINQ-Abfragen parallel aus

Werbung

KOMMENTARE

Keine Kommentare

KOMMENTAR SCHREIBEN

*
*
*
*

Alles Pflichfelder, E-Mail-Adresse wird nicht angezeigt.

Die Redaktion hält sich vor, unangebrachte, rassistische oder ehrverletzende Kommentare zu löschen.
Die Verfasser von Leserkommentaren gewähren der IDG Communications AG das unentgeltliche, zeitlich und räumlich unbegrenzte Recht, ihre Leserkommentare ganz oder teilweise auf dem Portal zu verwenden. Eingeschlossen ist zusätzlich das Recht, die Texte in andere Publikationsorgane, Medien oder Bücher zu übernehmen und zur Archivierung abzuspeichern.