© Excellent backgrounds/Shutterstock.com
Bücher

Bücher: Seven Concurrency Models in Seven Weeks


Bruce Tate hat vor wenigen Jahren mit „Seven Languages in Seven Weeks“ eine erfolgreiche Buchreihe gestartet, die dem Leser immer wieder unterschiedliche Systeme in sieben Wochen nahebringt und die er als Editor begleitet. Diesmal geht es um sieben Modelle nebenläufiger und paralleler Programmierung, ein Thema, das im Zeitalter der Multi-Core-Computer rapide an Bedeutung und Interesse gewonnen hat. Dabei sind die Ansprüche an den Leser recht hoch: Zwar liefern manche Programmiersprachen mehrere Modelle für die Multi-Core-Programmierung, doch für sieben unterschiedliche reicht eine Sprache dann doch nicht aus. Doch bietet der Autor das Nötige an, damit der erfahrene Leser sich in für ihn möglicherweise unbekannte Sprachen soweit einarbeiten kann, dass er die Konzepte der jeweils gezeigten Concurrency-Modelle verstehen kann.

Zu Beginn des Buchs geht der Autor kurz auf die Unterscheidung von nebenläufiger (concurrent) und paralleler Ausführung ein. Und im weiteren Verlauf des Buchs wird beides behandelt. Dabei startet er recht sanft mit Threads und Locks in Java. Als eine Beispielanwendung, die er im Laufe des Buchs immer wieder anders implementiert, dient das Fünf-Philosophen-Problem: Diese fünf Personen haben zwischen sich jeweils ein Stäbchen liegen. Sie denken eine Weile und werden darüber hungrig. Um essen zu können, benötigen sie sowohl das Stäbchen rechts wie jenes links von sich. Was aber, wenn alle ihr rechtes Stäbchen nehmen? Das ist gleichzeitig das linke Stäbchen des rechten Nachbarn. Somit steht keinem mehr ein linkes Stäbchen zur Verfügung. Und wenn alle ihr Stäbchen festhalten und warten, bis auf der anderen Seite eines frei wird, so warten sie ewig. Der Deadlock ist leicht ersichtlich, die Lösung nicht unbedingt trivial. Auch simple Konstrukte, wie unterschiedliche Locks und andere Formen der Synchronisation, z. B. Queues, wollen richtig verwendet werden.

Doch nach diesem Start verlässt Paul Butcher Java, auch wenn er noch auf der JVM verweilt: Die funktionale Programmierung, hier am Beispiel Clojure, bietet durch die Vermeidung veränderlicher Variablen auf einfache Weise andere Möglichkeiten. Wird kein veränderlicher gemeinsamer Status genutzt, so entstehen bestimmte Probleme erst gar nicht und es kann auf eine Synchronisation verzichtet werden. Doch Clojure ist keine pure funktionale Sprache; vielmehr bietet sie auch veränderliche Variablen. Wie mit Atoms und Agents nebenläufig programmiert werden kann, zeigt Butcher im Rahmen der Separieru...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang