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.