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
| Seite 1 von 5 | Nächste Seite » |

