Bücher online kostenlos Kostenlos Online Lesen
Einstieg in Google Go

Einstieg in Google Go

Titel: Einstieg in Google Go
Autoren: Dr. Mario Deilmann , Christian Himpel
Vom Netzwerk:
für die Primzahlen 1 bis 100 000 000
    Das liegt an einem anderen Ansatz für die Implementierung des Schedulers. Im Gegensatz zu anderen Thread-Modellen verwenden Go und TBB einen eigenen Scheduler für ihre parallelen Primitive (Task, GoRoutine ). Das hat verschiedene Vorteile. Zum einen erzeugt der Betriebssystem-Scheduler einen deutlichen Overhead gegenüber dem eigenen Scheduler und implementiert einen „fairen“ Algorithmus, d. h. er versucht, den einzelnen Threads möglichst gleich viel Zeit zuzuteilen. Die eigenen Scheduler hingegen verwenden leichtgewichtige Tasks bzw. GoRoutinen , die im User-Mode laufen und somit weniger Zeit beanspruchen, da die Kontextwechsel entfallen. Die eigenen Scheduler dagegen sind „unfair“ und bevorzugen Task- oder GoRoutinen , die eine günstige Cache- und Speicherausnutzung bedingen.
    Zusammenfassung
    Zusammen mit einer klaren, leserlichen und aufgeräumten Syntax bietet Googles Go mit GoRoutinen , Channels und primitiven Synchronisationsmechanismen alles was man heutzutage in einer Multi-core-Umgebung braucht, um performanten parallelen Code zu schreiben. Die Performance und Lastverteilung in unserem Beispiel ist ähnlich gut wie bei den Threading Building Blocks. Was die Flexibilität des generischen Modells und die Unterstützung von parallelen Datenstrukturen angeht, haben die TBB die Nase vorn, da es dafür in Go (bisher) keine Unterstützung gibt. Verwendet man Go allerdings in idiomatischer Form und nutzt ausschließlich Nachrichtenkanäle zur Kommunikation, kann man sehr gut auf die parallelen Container und atomaren Datentypen verzichten. Der idiomatische Ansatz geht allerdings mitunter zulasten der Performance. Google Go ist weit mehr als lediglich ein weiterer Kandidat auf der Liste der Programmiersprachen. Es bietet eine überzeugende Menge an modernen Sprachelementen mit einem Schwerpunkt auf Nebenläufigkeit. Da es ein relativ junges und sehr aktives Projekt ist, darf man erwarten, dass mit fortschreitender Entwicklung noch interessante Ideen in die Sprache einfließen werden. Es ist zu hoffen, dass Google diese Sprache durch interne Applikationsentwicklung unterstützt und auch zukünftig die Sprachentwicklung finanziert und fördert.
    Links & Literatur
Deilman, Mario: OpenMP und inkrementelle Parallelisierung. In: Entwickler Magazin 2.2007
Deilman, Mario: Multi-Threading mit den Intel Threading Building Blocks und den C++0x-Lambda-Funktionen. In: Entwickler Magazin 2.2008

Die Autoren

    Christian Himpel ist Diplom-Informatiker. Er arbeitet seit 2011 bei der Firma Intel als Software Engineer im QA Team des Debuggers.

    Dr. Mario Deilmann ist Diplom-Ingenieur und hat an der Ruhr-Universität-Bochum zum Thema „Direkte Numerische Simulation“ promoviert. Er arbeitet seit 2003 bei der Firma Intel und leitet das QA Team des Debuggers.
Vom Netzwerk:

Weitere Kostenlose Bücher