Sobes.tech
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.