Parallele Programmierung im .NET Framework Präsentation am Beispiel von C-Sharp (C#) Darmstadt, 08.12.2014 Wichtige Grundlagen Generika, Delegate, Lambda, Erweiterungsmethoden Parallele Programmierung Basis Features LINQ Extensions und PLINQ (Parallel LINQ) Task Parallel Library (TPL) und Parallel Namespace Asynchrone Programmierung Async und Await Parallele Programmierung im .NET Framework Grundlagen Grundlagen Parallele Programme Asynchrone Progr. Generika Delegate Lambda Erweiterungsmethoden Parallele Programmierung im .NET Framework Grundlagen - Generika Grundlagen Parallele Programme Asynchrone Progr. Generische Klassen und Methoden Bekannt aus anderen Programmiersprachen Ermöglicht es Klassen und Methoden zu entwerfen in denen die Angabe eines oder mehrerer Typen bis zur Instanziierung verzögert wird Parallele Programmierung im .NET Framework Grundlagen - Delegate Grundlagen Parallele Programme Asynchrone Progr. Delegate Es Referenztyp zum Kapseln anonymer Methoden Bekannt aus C++ (Funktionszeiger) Im Gegensatz zu Funktionszeigern sind Delegate typsicher Parallele Programmierung im .NET Framework Grundlagen – Generische Delegate Grundlagen Parallele Programme Asynchrone Progr. Generische Delegate Parallele Programmierung im .NET Framework Grundlagen – Lambda Grundlagen Parallele Programme Asynchrone Progr. Lambda Ausdrücke Eine anonyme Funktion mit der Instanzen von Delegaten erstellt werden können Typen von Lambda Parametern werden automatisch vom Compiler übersetzt Parallele Programmierung im .NET Framework Grundlagen – Erweiterungsmethoden Grundlagen Parallele Programme Asynchrone Progr. Erweiterungsmethoden Erlaubt es zu Klassen neue Methoden hinzuzufügen ohne von diesen abzuleiten oder die Klasse neu zu kompilieren Parallele Programmierung im .NET Framework Grundlagen – Praktisches Beispiel Grundlagen Parallele Programme Asynchrone Progr. Parallele Programmierung im .NET Framework Grundlagen – Praktisches Beispiel Grundlagen Parallele Programme Asynchrone Progr. Parallele Programmierung im .NET Framework Parallele Programmierung Grundlagen Parallele Programme Asynchrone Progr. Parallele Programmierung Basis Features System.Threading, Mutex, Semaphor, Monitor, .. Basis für alle Features der Parallel Library (Parallel)-LINQ Ein Set von generischen Erweiterungsmethoden zur parallelen Verarbeitung von Auflistungen (Datenparallelität) Task Parallel Library (TPL) Eine Fabrik zur erleichterten Erstellung und Bedienung von Threads in Form von Tasks Parallele Programmierung im .NET Framework Parallele Programmierung – Basis Features Grundlagen Parallele Programme Asynchrone Progr. Basis Features Thread, ThreadPool Enthält Methoden wie Start, Queue, Abort, Join Mutex, Semaphor Enthält Methoden wie WaitOne, Release Keywords Volatile, Synchronized (Annotation), Lock Monitor, Barrier, Interlocked, Timer Parallele Programmierung im .NET Framework Parallel-LINQ (PLINQ) Grundlagen Parallele Programme Asynchrone Progr. Language-Integrated Query Parallelisierbare Abfragesprache Auflistungen (In-Memory) XML SQL Nutzt die Daten-Parallelität von Auflistungen zur Verteilung der Iterationen auf mehrere Threads Erkennt und optimiert die Parallelität der Operation auf Basis von Heuristik Code Beispiele.. Parallele Programmierung im .NET Framework Task Parallel Library (TPL) Grundlagen Parallele Programme Asynchrone Progr. Task Parallel Library (System.Threading.Tasks) Der Zweck der TPL ist es, die Produktivität der Entwickler zu erhöhen, indem das Hinzufügen von Parallelität und Nebenläufigkeit zu Anwendungen vereinfacht wird Die TPL skaliert den Grad der Nebenläufigkeit dynamisch, um alle verfügbaren Prozessoren möglichst effizient zu nutzen Außerdem behandelt die TPL die Partitionierung der Arbeit, die Planung von Threads im ThreadPool, die Abbruchunterstützung, Zustandsverwaltung und andere Details auf niedriger Ebene Code Beispiele.. Parallele Programmierung im .NET Framework Asynchrone Programmierung Grundlagen Parallele Programme Asynchrone Progr. Asynchrone Programmierung Await und Async Keywords Code Beispiele..