TechEd09: Wie die CCR .NET-Entwicklern bei der Parallelprogrammierung hilft

veröffentlicht von am 12. November 2009

Die erste Session, die ich hier am vierten Tag der Microsoft TechEd besucht habe, wurde von Ralf Westphal gehalten, der in gewohnt unterhaltsamer und fundierter Weise das Thema asynchrone Programmierung vorstellte. Hauptsächlich auf Basis der Concurrency Coordination Runtime (CCR), die Microsoft mit Einführung des .NET-Frameworks 3.5 implementiert hat. Für alle, die mit dem Begriff CCR nicht so viel anfangen können, gibt’s auf MSDN einen kurzen Überblick.

Die erste interessante Aussage, die Ralf während seiner 75-Minuten-Session abgefeuert hat, war die Erkenntnis, dass Software-Entwickler sich selbst um das Parallelisieren ihrer Anwendungen kümmern müssen und dies nicht nur dem Betriebssystem oder anderen Instanzen überlassen dürfen. Ein weiterer Satz war nicht ganz überraschend und auch nicht neu, dafür umso wichtiger: “The free lunch is over!” Dieser Ausspruch stammt übrigens nicht von Ralf, sondern von Herb Sutter, der das bereits 2005 formuliert hat. Die Grundaussage dahinter lautet:

Künftige Prozessoren werden nicht mehr unendlich schneller, sind dafür mit immer mehr CPU-Kernen ausgestattet. Daher müssen Programmierer umdenken, um ihre Anwendungen in Zukunft zu beschleunigen.


Schenkt man Ralf Glauben (und das tue ich), steht die Parallelprogrammierung im Wesentlichen für folgende Dinge:

Reduced latency, higher performance, hiding latency, higher responsivness and increased throughput.

Dann folgten zwei eher rhetorische Fragen, deren Antworten man mit ein wenig Nachdenken sehr schnell selbst beantworten konnte:

Does firing up as many threads as cores are available help to accelerate apps? No, because this will cause threads waiting!

Does firing up as many threads as needed helps to accelerate apps? No, because it doesn’t scale!

Mit einem sehr schönen Vergleich leitete Ralf dann den Abschnitt “CCR” ein, indem er die digitale Kommunikation via E-Mail mit der asynchronen Programmierung verglich. Denn wie beim Verteilen von Aufgaben per Mail erfolgt das Ausführen von Tasks mithilfe der CCR genauso asynchron, indem ständig priorisiert und verteilt wird. Sehr anschaulich, oder?!

Dazu passen auch folgende Aussagen:

Concurrency Coordination Runtime (CCR) helps to let data flow around and make thus asynchronous apps possible.
Parallel Computing is all about cooperative multitasking where you have to think about small processes and steps.

Anschließend folgte die sehr anschauliche Demo, die den Einsatz der CCR in Form eines Programmierbeispiels zeigte. Dies hier wiederzugeben, wäre ein wenig zu umfangreich und auch kaum hilfreich. Allerdings stellt Microsoft angeblich sämtliche Sessions als Webcast online. Sobald Ralfs verfügbar ist, werde ich sie hier verlinken.

Natürlich haben wir Ralf nicht gehen lassen, ohne ihm drei Fragen zu stellen, die mit seinen Vorträgen auf der TechEd zu tun haben, mit der CCR und einer ganz exklusiven Geschichte, die er am Ende seiner Session zum ersten Mal in der Öffentlichkeit vorgestellt hat. Sobald das Videointerview online ist, werden ich es hier reinstellen.


Kategorien : Multicore Tags : , , ,

Kommentare
Beitrag kommentieren.

Sie müssen angemeldet sein um diesen Beitrag zu kommentieren. [Login | Registrieren]

(erforderlich)

(erforderlich)