Junior — Middle
Kann man Werte aus einem Kanal gleichzeitig in mehreren Goroutinen empfangen?
sobes.tech KI
Antwort von AI
Ja, mehrere Goroutines können gleichzeitig Werte aus einem Kanal in Go empfangen. Kanäle in Go unterstützen Mehrfachlesen und -schreiben, was es mehreren Goroutines ermöglicht, gleichzeitig aus einem Kanal zu lesen.
Es ist jedoch wichtig zu beachten, dass wenn mehrere Goroutines aus demselben Kanal lesen, jeder Wert nur von einer von ihnen empfangen wird — die Werte werden nicht dupliziert. Dies ist nützlich, um Arbeit zwischen Goroutines zu verteilen (Worker-Pool).
Beispiel:
ch := make(chan int)
// Mehrere Goroutines starten, die aus dem Kanal lesen
for i := 0; i < 3; i++ {
go func(id int) {
for val := range ch {
fmt.Printf("Goroutine %d erhielt %d\n", id, val)
}
}(i)
}
// Daten in den Kanal schicken
for i := 0; i < 10; i++ {
ch <- i
}
close(ch)
In diesem Beispiel werden die Werte aus dem Kanal auf die drei Goroutines verteilt.