Junior — Middle
Wie wird das Konkurrentiemodell in der Programmiersprache Golang implementiert?
sobes.tech KI
Antwort von AI
In der Programmiersprache Go basiert das Modell der Konkurrenz auf Goroutines und Kanälen.
-
Goroutines sind leichte Threads, die mit dem Schlüsselwort
gogestartet werden. Sie ermöglichen die parallele Ausführung von Funktionen ohne erheblichen Ressourcenaufwand. -
Kanäle sind typisierte Kanäle zum Austausch von Daten zwischen Goroutines, die Synchronisation und sicheren Informationsaustausch gewährleisten.
Beispiel:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan string) {
time.Sleep(time.Second)
ch <- fmt.Sprintf("Worker %d fertig", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch)
}
for i := 1; i <= 3; i++ {
msg := <-ch
fmt.Println(msg)
}
}
In diesem Beispiel führen drei Goroutines parallel Arbeiten aus und senden das Ergebnis in einen Kanal, aus dem der Hauptthread liest.
Auf diese Weise vereinfacht Go die nebenläufige Programmierung, indem es die Komplexität von Threads und Synchronisation verbirgt.