ORR2016 - 2016-11-15.01

OpenRheinRuhr 2016
Ein Pott voll Software

Referenten
Harald Weidner
Programm
Tag 05.11.2016 - 2016-11-05
Raum Vortragsraum 3
Beginn 15:50
Dauer 01:00
Info
ID 513
Veranstaltungstyp Vortrag
Track Programmierung
Sprache der Veranstaltung deutsch

Parallelprogrammierung in Go

Um die Möglichkeiten aktueller Mehrkernprozessoren auszuschöpfen, enthält die Programmiersprache Go Sprachmittel zur Unterstützung nebenläufiger und paralleler Programmierung. Diese werden in dem Vortrag vorgestellt: Goroutinen für die nebenläufige Ausführung von Programmcode und Channels für die Kommunikation und Synchronisation der Goroutinen. Daneben werden andere Formen der Synchronisation und die Nutzung von gemeinsamen Speicher erklärt.

Go ist eine relativ junge Programmiersprache, deren Entwicklung maßgeblich von Google getragen wird. Um die Möglichkeiten aktueller Mehrkernprozessoren auszuschöpfen, ist die Unterstützung nebenläufiger und paralleler Programmierung Bestandteil der Sprache. Go orientiert sich dabei am Modell der Communicating Sequential Processes (CSP), das von Tony Hoare bereits 1978 vorgestellt wurde.

Nach einer kurzen Einführung in nebenläufige und parallele Programmierung wird gezeigt, wie CSP in Go umgesetzt ist. Über Goroutinen kann Programmcode nebenläufig ausgeführt werden. Die Go-Runtime verteilt die Goroutinen auf Threads des Betriebssystems, so dass die Möglichkeiten mehrerer CPU-Kerne ausgeschöpft werden können. Über Channels können Goroutinen Daten austauschen und den Programmablauf synchronisieren.

Daneben ermöglicht es Go, dass parallele Programmteile auf gemeinsamen Speicher zugreifen. Hierbei kann es zu Wettlaufsituationen (Race Conditions) kommen. Daher müssen die Zugriffe synchronisiert werden. Dazu bietet die Go-Standardbibliothek verschiedene Mechanismen an. Im Memory Modell ist spezifiziert, welche Garantien die Sprache in Bezug auf parallele Zugriffe auf gemeinsamen Speicher bietet.