Kapitel 10. Gleichzeitigkeit

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Große Programme setzen sich oft aus vielen kleineren Unterprogrammen zusammen. Ein Webserver zum Beispiel bearbeitet Anfragen von Webbrowsern und liefert als Antwort HTML-Webseiten. Jede Anfrage wird wie ein kleines Programm behandelt.

Es wäre ideal, wenn Programme wie diese ihre kleineren Komponenten gleichzeitig ausführen könnten (im Fall des Webservers, um mehrere Anfragen zu bearbeiten). Die gleichzeitige Bearbeitung von mehr als einer Aufgabe wird als Gleichzeitigkeit bezeichnet. Go bietet mit Goroutines und Channels eine umfangreiche Unterstützung für Gleichzeitigkeit.

Goroutinen

Eine Goroutine ist eine Funktion, die gleichzeitig mit anderen Funktionen ausgeführt werden kann. Um eine Goroutine zu erstellen, verwenden wir das Schlüsselwort go, gefolgt von einem Funktionsaufruf:

package main

import "fmt"

func f(n int) {
    for i := 0; i < 10; i++ {
        fmt.Println(n, ":", i)
    }
}

func main() {
    go f(0)
    var input string
    fmt.Scanln(&input)
}

Dieses Programm besteht aus zwei Goroutinen. Die erste Goroutine ist implizit und ist die Hauptfunktion selbst. Die zweite Goroutine wird erstellt, wenn wir go f(0) aufrufen. Wenn wir eine Funktion aufrufen, führt unser Programm normalerweise alle Anweisungen in einer Funktion aus und kehrt dann zur nächsten Zeile nach dem Aufruf zurück. Bei einer Goroutine kehren wir sofort zur nächsten ...

Get Wir stellen vor: Go now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.