Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.


Share this Page URL
Help

Teil II: Rezepte > Nebenläufige Programmierung - Pg. 1117

Nebenläufige Programmierung Dieses Kapitel behandelt wichtige Techniken der nebenläufigen Programmierung mit moder- nen Mitteln des .NET Framework. Die einzelnen Rezepte gehen aber nicht oder nur sehr ober- flächlich auf die Gründe für den Einsatz nebenläufiger Programmierung ein. Falls Sie nebenläufige Programmierung einsetzen wollen und noch keine Vorerfahrung (zum Beispiel mit Threading) haben, sollten Sie sich mit den Grundlagen auseinandersetzen und besonderen Wert auf mögliche Probleme durch gleichzeitigen Zugriff mehrerer Threads auf Daten und Synchronisierung (die Deadlocks, Livelocks, Verhungern und andere Probleme verursachen kann) legen. Lesen Sie ggf. ein gutes Buch über nebenläufige Programmierung, wenn Sie sich damit noch nicht sehr auskennen. Bei Microsoft finden Sie zudem die »Parallel Programming in .NET 4 Coding Guidelines«. In diesem Dokument erhalten Sie viele wertvolle Tipps zur korrekten nebenläufigen Programmierung und zum Verhindern von Problemen. Das Dokument »Perfor- mance Characteristics of New Synchronization Primitives in the .NET Framework 4« zeigt die Performance neuer Synchronisationsobjekte im Vergleich zu alten auf. Im Dokument »Patterns of Parallel Programming« beschreibt Stephen Toub gängige Muster der nebenläufigen Pro- grammierung und deren Umsetzung mit der TPL. Alle Dokumente, deren Links sehr lang sind, sind (hoffentlich noch, wenn Sie dieses lesen ...) an der Adresse http://msdn.microsoft.com/ en-us/concurrency/ee851578.aspx bzw. http://msdn.microsoft.com/en-us/concurrency verlinkt. Sehr interessant und informativ sind auch einige »10 Minute Concepts« und andere Screen- casts zur Task Parallel Library (TPL), die Sie an der Adresse http://channel9.msdn.com/tags/ Parallel+Computing finden. Nebenläufige Programmierung ist nicht einfach, besonders dann, wenn Sie mit mehre- ren Tasks arbeiten und diese auf gemeinsame Ressourcen zugreifen oder synchronisiert werden müssen. Mit nur kleinen logischen Fehlern im Programm erhalten Sie schnell falsche Ergebnisse oder Probleme wie Deadlocks und Livelocks. Diese Probleme können in der Praxis in der Regel nur sehr schwer nachvollzogen werden und treten oft nur sehr selten und dann meist beim Kunden auf. Das sind Gründe genug, auf nebenläufige Programmierung möglichst zu verzichten. Wenn da nicht die Tatsache wäre, dass die immer mehr werdenden Prozessoreinheiten 1 nebenläufige Programmierung zur Erzie- lung einer guten Performance erzwingen. Ein guter Tipp ist, das Microsoft-Tool CHESS einzusetzen, um Ihren nebenläufigen Code auf potenzielle Probleme wie Deadlocks, Livelocks und Race Conditions in allen möglichen Verschachtelungen zu testen. CHESS finden Sie an der Adresse http://research.microsoft.com/projects/CHESS . 382 Schleifen und LINQ Abfragen korrekt parallelisieren Da die Prozessoreinheiten moderner Computer (zurzeit) aufgrund physikalischer Beschränkun- gen nicht mehr wesentlich schneller werden und Computer deshalb immer mehr Prozessoren Nebenläufige Programmie- rung 1. Den Begriff »Prozessoreinheiten« habe ich als Überbegriff für Prozessoren, Prozessorkerne und virtu- elle Prozessoren (Hyperthreading) gewählt. A c h t u ng