Junior — Middle
Wie viele Goroutines können gleichzeitig in einer Anwendung ausgeführt werden?
sobes.tech KI
Antwort von AI
In Go gibt es keine strenge Begrenzung für die maximale Anzahl gleichzeitig laufender Goroutines. Theoretisch können sehr viele gestartet werden — Zehntausende, Hunderttausende und manchmal sogar Millionen, abhängig von den Ressourcen des Systems (Speicher, CPU).
Goroutines sind im Vergleich zu Betriebssystem-Threads sehr leichtgewichtig, da sie einen dynamischen Stapel verwenden, der bei Bedarf wächst.
Die praktische Begrenzung hängt jedoch ab von:
- Der verfügbaren Menge an Speicher (jede Goroutine benötigt mindestens einige Kilobyte).
- Der Logik der Anwendung und der Synchronisation zwischen Goroutines.
- Der Belastung des Go-Planers.
Beispiel für das Starten einer großen Anzahl von Goroutines:
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
const n = 100000
wg.Add(n)
for i := 0; i < n; i++ {
go func(i int) {
defer wg.Done()
// einfache Arbeit
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Alle Goroutines sind beendet")
}
Daher ist die Begrenzung eher praktisch als systembedingt.