21. Die Klasse Thread Hauptklasse für Multithreading in .NET Bietet Operationen um Threads zu starten / abzubrechen Threads zu pausieren / reaktivieren Threads warten zu lassen Atomare Operationen durchzuführen Bietet Eigenschaften um Kontext-Informationen zu erhalten Status-Informationen zu erhalten Prioritäten zu verändern Status zu ändern
22. Die Klasse ThreadPool Das erstellen von Threads ist sehr aufwändig Es muss gemacht werden Kontexte vom Basisthread übernehmen Ressourcen im Kernel allokieren Thread-Kontrollstrukturen (TCB) erstellen Kontexte vom Basisthread übernehmen Auf Scheduling warten Resourcen wieder freigeben … Für Operationen die schnell ausgeführt werden müssen, eignet sich die Klasse Thread nur bedingt!
23.
24. Die Klasse ThreadPool Klasse ist statisch Anzahl minimaler und maximaler Threads ist einstellbar Anwendung ist einfach: Methode(object) erstellen Delegaten für die Methode erstellen Delegaten an ThreadPool übergeben Thatsit…
28. Synchronisierung (Beispiel 1) Immer wenn 2 Objekte eine gemeinsame Ressource nutzen, kommt es zu Konflikten Um diese Konflikte zu vermeiden, müssen gemeinsame Ressourcen synchronisiert werden. Sehr Fehleranfällig (Deadlocks)
29.
30. Y = 010 15 15 5 Ausgabe: New Point at 15/5 New Point at 15/15 Solche Fehler heißen Heisenbugs, der Albtraum aller Entwickler!!!
33. Task Parallel Library Parallel Extensions TPL Structuresfor Parallel Programming Parallel LINQ Führt Task als Abstrahierung von Thread ein Automatisiert viele Vorgänge Wesentlich einfacher!!!