Sie sind hier
E-Book

Parallel Computing in .NET

Multicore-Programmierung von .NET 2.0 bis 4.0

AutorMarc André Zhou
Verlagentwickler.press
Erscheinungsjahr2011
Seitenanzahl478 Seiten
ISBN9783868022599
FormatPDF
Kopierschutzkein Kopierschutz/DRM
GerätePC/MAC/eReader/Tablet
Preis22,00 EUR
In der Vergangenheit konnten Anwendungen automatisch von neueren Prozessoren mit höheren Taktfrequenzen profitieren. Diese Gesetzmäßigkeit wird sich in der Zukunft nicht mehr fortsetzen. Die Leistungsfähigkeit moderner Prozessoren steigert sich heute in der Regel durch den gleichzeitigen Einsatz mehrerer CPU-Kerne. Da Anwendungsentwickler nicht mehr darauf bauen können, dass eine sequentiell implementierte Anwendung auf einer neueren CPU-Generation schneller ausgeführt wird, müssen die Möglichkeiten der Multicore-Technologie gezielt genutzt werden. Der Schlüssel dazu lautet 'Parallel Computing'. Das Buch 'Parallel Computing unter .NET' liefert das dazu nötige Wissen. Außer den wichtigsten theoretischen Grundlagen werden die Möglichkeiten des .NET Frameworks (inklusive der Neuerungen in .NET 4.0) bei der Programmierung von Multicore-Anwendungen dargestellt. Dabei werden u. a. folgende Themenfelder behandelt: Theoretische Konzepte und Gesetzmäßigkeiten Domain- und Functional-Decomposition Auswirkungen auf das Projektmanagement Passive und Aktive Klassen Speichermodelle Konzepte zur Deadlock-Vermeidung Fehlerbehandlung Threads unter .NET Synchronisierungskonzepte ThreadPools Task Parallel Library (TPL) und PLINQ Neue Debugging-Möglichkeiten in Visual Studio 2010 Die Neuauflage des Buches wurde auf die finale API der .NET Version 4.0 angepasst. Ein zusätzliches Kapitel beschreibt die erweiterten Möglichkeiten der Task Parallel Library, wie z. B. der Realisierung eines eigenen Task Schedulers. Ein weiteres neues Kapitel geht auf das Zusammenspiel zwischen der Task Parallel Library und der neuen Async.-Bibliothek ein.

Marc André Zhou ist Dipl. Inf. (FH) und erwarb zusätzlich den Titel Master of Science (M. Sc.). Er entwirft und entwickelt seit über 10 Jahren Software für unterschiedliche Branchen. Er ist als freiberuflicher Technologieberater hauptsächlich als Entwickler, Architekt und (Entwickler-) Coach tätig. Sein Schwerpunkt ist die Realisierung von Anwendungen auf Basis der Microsoft .NET Plattform und SharePoint. Neben diesen Tätigkeiten ist er regelmäßiger Autor des dot.net-Magazins und Speaker auf der BASTA! Mehr Infos über Marc André Zhou sowie seinen Blog finden Sie unter www.dev-sky.net

Kaufen Sie hier:

Horizontale Tabs

Leseprobe
11 Programmiermodelle (S. 423-424)

Bisher wurden in diesem Buch Möglichkeiten vorgestellt, wie man unter .NET Parallel Computing betreiben kann. Bis zu der Version 3.5 SP1 (Service Pack1) des .NET Frameworks standen nur rudimentäre, Thread-basierte Möglichkeiten zur Verfügung. Eine Alternative besteht in der Nutzung der Concurrency and Coordination Runtime (CCR), die in Kapitel 9 vorgestellt wurde. Diese ist aber eher auf die optimale Ausführung von Prozessen hin optimiert und erfordert eine geeignete Anwendungsarchitektur.

Mit dem .NET Framework 4.0 wurde mit der Task Parallel Library (TPL) und PLINQ erstmals eine Verbesserung in Hinblick auf Parallel Computing eingeführt. PLINQ ermöglicht es auf einfache Art und Weise, vorhandene LINQ-Abfragen zu parallelisieren. Die TPL führt mit dem Task-Konzept verbesserte Möglichkeiten ein, um Aufgaben effektiver und einfacher parallel ausführen zu können. Die Task-Klasse enthält viele Funktionen, die bei der Thread-Klasse oft vergeblich gesucht wurden.

Die neue Concurrent Runtime übernimmt im Hintergrund die optimale Ausnutzung und Belegung vorhandener Systemressourcen. Auch wenn die neuen Parallel Extensions unter .NET 4.0 viele Erleichterungen bringen, werden noch nicht alle typischen Probleme gelöst. Typische Seiteneffekte, wie der Zugriff auf gemeinsame Variablen durch mehrere Tasks, müssen auch unter .NET 4.0 beachtet werden. Dazu müssen weiterhin Sperren (Locks) verwendet werden, die bei falscher Verwendung auch unter .NET 4.0 zu Deadlocks führen können.

Leider werden sich diese Probleme auch nur schwer „automatisch“ durch neue APIs innerhalb des .NET Frameworks lösen lassen. An dieser Stelle muss über andere veränderte Programmiermodelle nachgedacht werden. Dazu gibt es auch schon bei Microsoft einige Überlegungen. Zwei davon werden in diesem Kapitel vorgestellt. Neben dem Einsatz von Parallel Computing reicht es aber auch teilweise aus, auf ein asynchrones Ausführungsmodell zurückzugreifen, das im letzten Abschnitt thematisiert wird.
Blick ins Buch
Inhaltsverzeichnis
Inhaltsverzeichnis5
1 Einleitung15
1.1 Für wen ist dieses Buch?15
1.2 Ziele des Buchs16
1.3 Parallel Computing: Warum?17
1.3.1 CPU: Umkehrung der Entwicklung18
1.3.2 Multi-core-Prozessoren21
1.3.3 Nutzung von Multi-core-Prozessoren21
1.4 Grundlagen23
1.4.1 Definition: Parallel Computing25
1.4.2 Rechnerarchitekturen26
1.4.3 Multithreading vs. Parallel Computing31
1.4.4 Asynchrone Programmierung vs. Parallel Computing32
1.4.5 Arbeitsweise33
1.4.6 Parallele Programmiermodelle33
1.4.7 Einteilung nach Flynn37
1.5 Performanceindikatoren und Gesetzmäßigkeiten38
1.5.1 Speedup39
1.5.2 Effizienz41
1.5.3 Amdahlsches Gesetz42
1.5.4 Gustafson-Gesetz45
1.5.5 Mehraufwand (Parallel Overhead)45
1.5.6 Kritische Bereiche (Load Imbalance)47
1.5.7 Slowdown-Effekt48
1.5.8 Weitere wichtige Begriffe48
1.6 Granularität50
1.6.1 Fine-grain Parallelism51
1.6.2 Coarse-grain Parallelism51
2 Allgemeine Konzepte53
2.1 Regeln für erfolgreiches Parallel Computing53
2.1.1 Arbeitsverteilung55
2.1.2 Zustandsverwaltung (Shared State)60
2.1.3 Selbstblockade (Deadlock)64
2.1.4 Starvation69
2.1.5 Fehlerbehandlung69
2.2 Projektmanagement und Planung71
2.2.1 Grad der Parallelisierung71
2.2.2 Kostenkalkulation73
2.2.3 Anforderungsdefinition73
2.3 Modellierungsmöglichkeiten74
2.3.1 (Passive) Klassen und aktive Klassen75
2.3.2 Kommunikation77
2.3.3 Synchronisierung79
3 Die Basis: Threads unter .NET81
3.1 Das Prozessmodell unter Windows81
3.1.1 Anatomie eines Threads84
3.1.2 Speicherzuordnung86
3.1.3 Kontextwechsel und State Transition89
3.2 Ein Thread-Objekt erstellen90
3.2.1 Erstellung eines Threads (kernel32.dll)91
3.2.2 Erstellung eines Threads unter .NET96
3.2.3 Managed Threads vs. Windows Threads98
3.2.4 Zustände eines Threads101
3.3 Verwendung von .NET Threads102
3.3.1 Warten auf einen Thread103
3.3.2 Steuerung von Threads105
3.3.3 Threads beenden106
3.3.4 Thread-Parameter109
3.3.5 Background Threads vs. Foreground Threads113
3.4 Atomare Operationen116
3.4.1 Die Methoden der Interlocked-Klasse120
3.5 Speichermodelle123
3.5.1 Das Schlüsselwort volatile124
3.5.2 VolatileWrite und VolatileRead126
3.6 Speicherzugriff und Verwaltung126
4 Synchronisation von Threads131
4.1 Monitor134
4.1.1 Hinweise zur Verwendung von Monitor135
4.1.2 Die Monitor-Klasse richtig verwenden137
4.1.3 Erweiterte Techniken: Pulse und Wait139
4.1.4 Das Schlüsselwort lock141
4.2 Mutex142
4.2.1 Zugriffsrechte144
4.2.2 Mutex vs. Monitor146
4.3 Semaphore147
4.4 Ereignisse (Events)150
4.4.1 ManualResetEvent150
4.4.2 AutoResetEvent153
4.4.3 EventWaitHandle153
4.5 ReaderWriterLock156
5 Erweiterte Thread- Techniken161
5.1 Warten auf Threads161
5.2 Parameter und Ergebnisse163
5.3 Verwendung des Threadpools165
5.3.1 Threadpool-Varianten167
5.3.2 Verwendung des CLR-Threadpools168
5.3.3 Arbeitsweise des CLR-Threadpools171
5.3.4 Lastverteilung172
5.4 Kontrollierter Thread-Abbruch175
5.4.1 Abbruch mittels Interrupt177
5.5 Fehlerbehandlung179
5.6 Ein Chatserver180
5.6.1 Architektur und Funktionsweise182
5.6.2 Der Chatserver184
5.7 Client/Server-Protokoll188
5.7.1 Serververwaltung189
5.7.2 Chatclient191
5.7.3 Zusammenfassung193
6 Task Parallel Library195
6.1 Bestandteile200
6.1.1 Data Structures201
6.1.2 Concurrency Runtime202
6.1.3 Tools (Werkzeuge)205
6.1.4 Programmiermodell205
6.2 Das Task-Konzept206
6.2.1 Zustände eines Tasks207
6.2.2 Möglichkeiten der Task-Erzeugung209
6.2.3 Optimale Ressourcennutzung215
6.2.4 Race Conditions, Deadlocks und Ressourcen220
6.3 Das Cancellation Framework221
6.3.1 Motivation222
6.3.2 Ziele226
6.3.3 Funktionsweise und Architektur227
6.3.4 Bestandteile229
6.3.5 Verwendung232
6.4 Erweiterte Task-Konzepte238
6.4.1 Warten auf einen oder mehrere Tasks238
6.4.2 Task Workflows (Prozesskette)241
6.4.3 Task mit Rückgabewerten243
6.5 Fehlerbehandlung245
6.5.1 Verschachtelte Tasks248
6.6 Schleifen253
6.6.1 Parallel.For und Parellel.ForEach254
6.6.2 Lokale Schleifenvariablen255
6.6.3 Schleifenabbruch258
6.6.4 Grad der Parallelität260
6.6.5 Die Parallel.Invoke260
6.7 Concurrent Data Structures265
6.7.1 ConcurrentQueue266
6.7.2 ConcurrentStack268
6.7.3 ConcurrentBag271
6.7.4 BlockingCollection272
6.7.5 ConcurrentDictionary275
6.8 Sperren (Locks)277
6.8.1 Barrier278
6.8.2 CountdownEvent281
6.8.3 ManualResetEventSlim283
6.8.4 SemaphoreSlim284
6.8.5 SpinWait und SpinLock285
6.9 Lazy Initialization Classes288
6.9.1 System.Lazy289
6.9.2 System.Threading.ThreadLocal291
6.9.3 System.Threading.LazyInitializer292
7 PLINQ – Parallel LINQ297
7.1 Funktionsweise298
7.1.1 Ausführungsmodell299
7.1.2 Merge Options301
7.1.3 Partitionierung der Daten302
7.1.4 With-Optionen306
7.1.5 Fehlerbehandlung312
7.2 Verwendung von PLINQ313
7.2.1 Definition von Abfragen mittels Enumerable314
7.2.2 Abfragemethoden315
7.2.3 Query Expressions316
7.3 LINQ zu PLINQ: Was ist zu beachten?317
7.3.1 PLINQ und gemeinsame Ressourcen317
7.3.2 PLINQ und Fehlerbehandlung321
7.3.3 PLINQ und Reihenfolge321
7.3.4 Struktur vs. Klasse323
7.3.5 LINQ zu PLINQ: Einige Regeln325
7.4 Zusammenfassung326
8 Erweiterte Task- Parallel-Techniken327
8.1 Task Scheduler (Task-Manager)327
8.1.1 API-Übersicht331
8.1.2 Langläufige Aufgaben333
8.1.3 Inline Tasks335
8.1.4 Steuerungsmöglichkeiten335
8.1.5 FromCurrentSynchronizationContext337
8.2 Benutzerdefinierte Aufgabenplaner345
8.2.1 Task mit Priorität346
8.2.2 Verwendung eigener Aufgabenplaner351
8.2.3 Weitere Aufgabenplaner352
8.3 TPL Dataflow (TDF)352
8.3.1 Entstehung der TDF-Bibliothek353
8.3.2 Aufbau und Funktionen der TDF355
8.3.3 Umsetzung der TDF356
8.3.4 Verwendung der Dataflow Blocks361
8.3.5 Laufzeiteigenschaften366
9 Parallel Computing in Visual Studio 2010371
9.1 Threadauswertung371
9.2 Parallel Tasks372
9.3 Parallel Stacks375
9.4 Performanceanalyse377
9.4.1 CPU-Nutzung381
9.4.2 Threadansicht382
9.4.3 Verteilung auf CPU-Kerne384
9.5 Profiling ohne Visual Studio 2010385
9.5.1 Profiling durchführen386
9.5.2 Laufenden Prozess auswerten387
9.5.3 Auswertung der Leistungsdaten387
9.6 Zusammenfassung388
10 Concurrency and Coordination Runtime389
10.1 Einordnung und Funktionsweise390
10.1.1 CCR vs. Task Parallel Library und PLINQ391
10.1.2 (Geschäfts-)Prozesse im Mittelpunkt392
10.1.3 Datenflüsse und Kanäle394
10.1.4 Vermeidung von Threads395
10.2 Kernbestandteile395
10.2.1 Ports396
10.2.2 Arbiter400
10.2.3 Dispatcher und DispatcherQueue403
10.3 Abbildung von Prozessen409
10.3.1 Bedingungen und Prozessflüsse410
10.3.2 Auswahl412
10.3.3 Einfache Zusammenführung (2 Ports)414
10.3.4 Warten auf mehrere Ports416
10.3.5 Warten auf n Daten419
10.4 Zusammenfassung421
11 Programmiermodelle423
11.1 Axum424
11.1.1 Gemeinsame Ressourcen425
11.1.2 Sperren – Synchronisation statt parallel426
11.1.3 Vermeidung von Seiteneffekten durch428
Isolation428
11.1.4 Axum basiert auf dem Actor Model428
11.1.5 Verwendung von Axum429
11.1.6 Domäne Agent Channel Port431
11.1.7 Agent432
11.1.8 Channel und Port433
11.1.9 Datenflusskonzept436
11.1.10 Request-Reply-Muster439
11.1.11 Datendefinition für einen Channel441
11.1.12 Gemeinsame Ressourcen443
11.1.13 Zusammenfassung445
11.2 Software Transaction Memory445
11.2.1 Probleme klassischer Sperrmechanismen447
11.2.2 Deadlock448
11.2.3 Funktionsweise448
11.2.4 Transaktionen und Rollback-Mechanismen449
11.2.5 Verwendung452
11.2.6 Weitere Funktionen455
11.3 Asynchrone Programmierung456
11.3.1 Bisherige asynchrone Ansätze457
11.3.2 Probleme bisheriger asynchroner Ansätze459
11.3.3 Task-basierter asynchroner Ansatz (TAP)460
11.4 Parallel Computing und JavaScript465
11.4.1 JavaScript im Browser465
11.4.2 Web Workers466
11.4.3 Zusammenfassung470
Zusammenfassung471
Stichwortverzeichnis473

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

FESTIVAL Christmas

FESTIVAL Christmas

Fachzeitschriften für Weihnachtsartikel, Geschenke, Floristik, Papeterie und vieles mehr! FESTIVAL Christmas: Die erste und einzige internationale Weihnachts-Fachzeitschrift seit 1994 auf dem ...

BIELEFELD GEHT AUS

BIELEFELD GEHT AUS

Freizeit- und Gastronomieführer mit umfangreichem Serviceteil, mehr als 700 Tipps und Adressen für Tag- und Nachtschwärmer Bielefeld genießen Westfälisch und weltoffen – das zeichnet nicht ...

Card Forum International

Card Forum International

Card Forum International, Magazine for Card Technologies and Applications, is a leading source for information in the field of card-based payment systems, related technologies, and required reading ...

küche + raum

küche + raum

Internationale Fachzeitschrift für Küchenforschung und Küchenplanung. Mit Fachinformationen für Küchenfachhändler, -spezialisten und -planer in Küchenstudios, Möbelfachgeschäften und den ...

die horen

die horen

Zeitschrift für Literatur, Kunst und Kritik."...weil sie mit großer Aufmerksamkeit die internationale Literatur beobachtet und vorstellt; weil sie in der deutschen Literatur nicht nur das Neueste ...

EineWelt

EineWelt

Lebendige Reportagen, spannende Interviews, interessante Meldungen, informative Hintergrundberichte. Lesen Sie in der Zeitschrift „EineWelt“, was Menschen in Mission und Kirche bewegt Man kann ...

elektrobörse handel

elektrobörse handel

elektrobörse handel gibt einen facettenreichen Überblick über den Elektrogerätemarkt: Produktneuheiten und -trends, Branchennachrichten, Interviews, Messeberichte uvm.. In den monatlichen ...

VideoMarkt

VideoMarkt

VideoMarkt – besser unterhalten. VideoMarkt deckt die gesamte Videobranche ab: Videoverkauf, Videoverleih und digitale Distribution. Das komplette Serviceangebot von VideoMarkt unterstützt die ...