Middle+
Erzählen Sie mir mehr über WaitGroup: Wie funktioniert es, was machen Add, Done, Wait?
sobes.tech KI
Antwort von AI
WaitGroup in Go wird verwendet, um auf den Abschluss einer Gruppe von Goroutines zu warten.
- Add(n int) — erhöht den Zähler um n, wird in der Regel vor dem Starten der Goroutines aufgerufen.
- Done() — verringert den Zähler um 1, wird in der Goroutine nach Abschluss der Arbeit aufgerufen.
- Wait() — blockiert die Ausführung, bis der Zähler auf null gesetzt ist, also bis alle Goroutines Done aufrufen.
Beispiel:
var wg sync.WaitGroup
wg.Add(3) // warten auf 3 Goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
fmt.Println("Goroutine", id, "abgeschlossen")
}(i)
}
wg.Wait() // warten auf das Ende aller Goroutines
fmt.Println("Alle Goroutines sind beendet")
Auf diese Weise hilft WaitGroup, parallele Aufgaben zu synchronisieren und auf deren Abschluss zu warten.