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