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.
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.
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.
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.
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.
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.
Windows im Sicherungskasten
Ein Erfahrungsbericht…
Continue reading “Windows im Sicherungskasten”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.
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”