Sobes.tech
Junior — Middle

Wie kann man feststellen, dass alle Kind-Goroutines in einem Go-Programm beendet wurden?

sobes.tech KI

Antwort von AI

In Go wird zur Bestimmung des Abschlusses aller Kind-Goroutinen in der Regel die Synchronisation mit dem Typ sync.WaitGroup verwendet.

Beispiel:

var wg sync.WaitGroup

wg.Add(3) // erwarten 3 Goroutinen

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // Signal für Abschluss
        // Arbeit der Goroutine
        fmt.Println("Goroutine", id, "abgeschlossen")
    }(i)
}

wg.Wait() // blockiert, bis alle Goroutinen Done aufrufen
fmt.Println("Alle Goroutinen sind abgeschlossen")

Auf diese Weise ermöglicht WaitGroup der Haupt-Goroutine, auf den Abschluss aller Kind-Goroutinen zu warten.