Sobes.tech
Junior — Middle

Wie viele Goroutines können gleichzeitig ohne wesentliche Probleme für das System gestartet werden?

sobes.tech KI

Antwort von AI

In Go hängt die maximale Anzahl gleichzeitig laufender Goroutines von den Systemressourcen (Arbeitsspeicher, CPU-Zeit) und der Art der Aufgaben ab, die sie ausführen. Theoretisch können Hunderttausende oder sogar Millionen von Goroutines gestartet werden, da sie im Vergleich zu Betriebssystem-Threads sehr leichtgewichtig sind.

In der Praxis:

  • Wenn Goroutines aktiv die CPU nutzen, führt eine zu hohe Anzahl zu Leistungseinbußen durch Kontextwechsel.
  • Wenn Goroutines auf Ein- und Ausgabe warten oder auf Ereignisse warten, können viel mehr ohne wesentliche Probleme existieren.

In echten Anwendungen werden normalerweise einige Hundert bis einige Tausend Goroutines ohne Probleme gestartet. Bei Bedarf sollte die Anwendung profiliert und die Speichernutzung sowie die CPU-Auslastung überwacht werden.

Beispiel für die Erstellung vieler Goroutines:

for i := 0; i < 100000; i++ {
    go func(n int) {
        // irgendeine Arbeit
        fmt.Println(n)
    }(i)
}