Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von...

14
Parallele Programmierung im .NET Framework Darmstadt, 08.12.201 Präsentation am Beispiel von C-Sharp (C#) 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

Transcript of Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von...

Page 1: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Darmstadt, 08.12.2014Präsentation am Beispiel von C-Sharp (C#)

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

Page 2: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen

Generika

Delegate

Lambda

Erweiterungsmethoden

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 3: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen - Generika

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

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 4: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen - Delegate

Delegate Es Referenztyp zum Kapseln anonymer Methoden

Bekannt aus C++ (Funktionszeiger)

Im Gegensatz zu Funktionszeigern sind Delegate

typsicher

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 5: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen – Generische Delegate

Generische Delegate

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 6: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen – Lambda

Lambda Ausdrücke Eine anonyme Funktion mit der Instanzen von

Delegaten erstellt werden können

Typen von Lambda Parametern werden automatisch

vom Compiler übersetzt

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 7: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen – Erweiterungsmethoden

Erweiterungsmethoden Erlaubt es zu Klassen neue Methoden hinzuzufügen

ohne von diesen abzuleiten oder die Klasse neu zu

kompilieren

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 8: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen – Praktisches Beispiel

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 9: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Grundlagen – Praktisches Beispiel

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 10: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Parallele Programmierung

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

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 11: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Parallele Programmierung – Basis Features

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

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 12: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Parallel-LINQ (PLINQ)

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..

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 13: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Task Parallel Library (TPL)

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..

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.

Page 14: Parallele Programmierung im.NET Framework Darmstadt, 08.12.2014 Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,

Parallele Programmierung im .NET Framework

Asynchrone Programmierung

Asynchrone Programmierung Await und Async Keywords

Code Beispiele..

4 Grundlagen4 Parallele Programme4 Asynchrone Progr.