Go Concurrent Programming

On Java you can run 1000’s or tens of 1000’s threads. On Go you can run hundreds of thousands or millions of goroutines. Google Go (Golang) ist die Programmiersprache mit feinen Concurrency Konzepten. Golang bietet die direkte Unterstützung für die parallele Ausführung via goroutines direkt in der Syntax und unterscheidet sich damit von anderen Programmiersprachen wie z.B. Java.

goroutines sind nicht Threads und damit wird das Scheduling nicht via das Betriebsystem sondern über die Go Runtime behandelt, welche das Multiplexing über ein definierte Anzahl von Threads oder Prozessoren übernimmt.

Die Synchronisierung der parallelen Routinenen erfolgt via Channels (Signale) und Mutual Exclusion Locks. Mehrere Channels (Signale) sind via Select abfangbar. Diese Konzepte ermöglichen das effiziente Programmieren, aber die Konzepte müssen dabei verstanden werden.

Mit dem Data Races Detector findet man in Golang mögliche Ablauffehler, die ansonsten nur sehr schwierig zu finden sind.

Auch die effektive parallele Ausführung über mehrere Prozessoren (CPU's) hinweg wird direkt unterstützt, parallel heisst aber nicht concurrent.

Dieser Kurs bietet Ihnen eine vertiefte Einführung in die parallele oder concurrent Programmierung mit Google Go. Anhand von Beispielen und Übungen lernen Sie wie man das Golang Concurrent Package richtig anwendet für Ihre Applikationen.