Junior — Middle
Wie wird die parallele und sequenzielle Verarbeitung von Aufgaben in der Programmiersprache Go implementiert?
sobes.tech KI
Antwort von AI
In Go wird die parallele Verarbeitung von Aufgaben mit Goroutines umgesetzt, das sind leichte Threads, die mit dem Schlüsselwort go gestartet werden. Eine Goroutine kann asynchron eine Funktion ausführen, und sie läuft parallel zu anderen Goroutines.
Serielle Verarbeitung bedeutet, Funktionen ohne go aufzurufen, wobei die Aufgaben nacheinander ausgeführt werden.
Beispiel für parallele Verarbeitung:
package main
import (
"fmt"
"time"
)
func aufgabe(id int) {
fmt.Printf("Aufgabe %d gestartet\n", id)
time.Sleep(time.Second)
fmt.Printf("Aufgabe %d beendet\n", id)
}
func main() {
for i := 1; i <= 3; i++ {
go aufgabe(i) // startet eine Goroutine
}
time.Sleep(2 * time.Second) // wartet auf das Ende der Goroutines
}
In diesem Beispiel werden drei Aufgaben parallel gestartet. Wird go entfernt, werden die Aufgaben nacheinander ausgeführt.
Zur Synchronisation und Steuerung von Goroutines werden häufig Kanäle (channels) und sync.WaitGroup verwendet.