TPL Teil 6 – Aggregationen

Mit Schleifen werden häufig Daten zusammengeführt, bzw. verdichtet. Solche Aggregationen werden innerhalb der Task Parallel Library (TPL) durch die Methoden Parallel.For() und Parallel.ForEach() direkt unterstützt.

Continue reading “TPL Teil 6 – Aggregationen”

TPL Teil 5 – Exceptions

Ein wichtiger Aspekt bei parallelen Abläufen ist die Fehlerbehandlung. Da Vorgänge gleichzeitig ausgeführt werden, können auch Ausnahmen zeitgleich auftreten. Diese sollten bei einer produktiven Anwendung sauber und zuverlässig abgefangen werden. Die TPL bietet hier einige Verbesserungen aber auch einige Fallstricke gegenüber der klassischen Multithreading-Programmierung.

Continue reading “TPL Teil 5 – Exceptions”

TPL Teil 4 – Die Klasse Parallel

Neben der Klasse Task, die im zweiten Teil vorgestellt wurde, bietet die Klasse Parallel mit die interessantesten Neuerungen in der Task Parallel Library (TPL). Sowohl das Parallel.For-Konstrukt als auch das Parallel.ForEach-Konstrukt stellt eine konkurrenzlos einfache Möglichkeit bereit, um aufwändige Berechnungen zu parallelisieren und damit deutlich zu beschleunigen.

Continue reading “TPL Teil 4 – Die Klasse Parallel”

MEF Teil 11 – Neuerungen unter .NET 4.5

Mit dem .NET Framework 4.5 wurden auch bei dem Managed Extensibility Framework (MEF) einige Neuerungen eingeführt. So werden jetzt offene generische Typen unterstützt und es gibt die Möglichkeit einer API-basierten Konfiguration. Dadurch wird eine lose Koppelung noch einfacher erreicht. Diese und alle neuen Erweiterungen erklärt der folgende Post.

Continue reading “MEF Teil 11 – Neuerungen unter .NET 4.5”

TPL Teil 3 – Workflows

Mit der Klasse Task ist es möglich, weitere Tasks zu definieren, die ausgeführt werden, sobald der aktuelle Task beendet wurde. Dabei kann u.a. definiert werden, ob die Nachfolge-Aktion nur bei erfolgreicher Beendigung oder im Falle eines Fehlers ausgeführt werden soll. Hierdurch lassen sich mit der Task Parallel Library (TPL) sehr elegant umfangreiche Workflows definieren.

Continue reading “TPL Teil 3 – Workflows”

TPL Teil 2 – Die Klasse Task

Bisher stand bei der Programmierung von multithreading Applikationen die Klasse Thread im Mittelpunkt. Mit .NET 4 wurde die Task Parallel Library (TPL) eingeführt, die mit der Klasse Task ein neues Konzept zur Verfügung stellt. Diese ist zwar auf den ersten Blick vergleichbar mit der Thread-Klasse, bringt aber einige Neuerungen und Verbesserungen mit sich.

Continue reading “TPL Teil 2 – Die Klasse Task”

TPL Teil 1 – Einführung

Seit der ersten Version von .NET lassen sich mit der Klasse System.Threading.Thread multithreading-fähige Anwendungen erstellen. Allerdings stammt diese Klasse aus einer Zeit, in der Single-Core-CPUs der Stand der Dinge waren. Um Multi-Core-CPUs effektiv nutzen zu können, bedarf es neuer Werkzeuge. Mit dem .NET Framework 4.0 wurde die Task Parallel Library (TPL) eingeführt. Diese API vereinfacht vieles, doch ist auch ein Umdenken erforderlich.

Continue reading “TPL Teil 1 – Einführung”

Lambda Expressions und Expression Trees – Teil 2

Seit C# 3.0 gehören Lambda Expressions zum Alltag eines Entwicklers. Im ersten Teil wurden die Grundlagen von Statement Lambdas und Expression Lambdas wiederholt. Etwas weniger bekannt sind Expression Trees. Diesem Defizit will ich durch den folgenden Post entgegenwirken und die Grundlagen von Expression Trees vorstellen.

Continue reading “Lambda Expressions und Expression Trees – Teil 2”

Lambda Expressions und Expression Trees – Teil 1

Während Lambda Expressions den meisten Entwicklern vertraut sein sollten, sind Expression Trees eher unbekannt. Expression Trees bieten die Möglichkeit, ausführbaren Code in hierarchischen Datenstrukturen abzubilden. Jeder Knoten wird dabei durch eine Lambda Expression dargestellt. Dieser kann zur Laufzeit geändert werden, wodurch sich interessante Möglichkeiten ergeben.

Continue reading “Lambda Expressions und Expression Trees – Teil 1”