Sobes.tech
Junior — Middle

Welche Funktionen bietet die Struktur WaitGroup in der Programmiersprache Go zur Synchronisation von Goroutinen?

sobes.tech KI

Antwort von AI

In der Programmiersprache Go wird die Struktur sync.WaitGroup verwendet, um mehrere Goroutines zu synchronisieren, sodass die Hauptgoroutine auf deren Abschluss warten kann.

Hauptmethoden von WaitGroup:

  • Add(delta int) — erhöht oder verringert den Zähler der erwarteten Goroutines. Wird in der Regel vor dem Starten der Goroutines aufgerufen.

  • Done() — verringert den Zähler um 1, wird am Ende der Arbeit der Goroutine aufgerufen.

  • Wait() — blockiert die Ausführung, bis der Zähler auf null steht.

Beispiel für die Verwendung:

var wg sync.WaitGroup

wg.Add(3) // wir erwarten 3 Goroutines

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // Signal, dass die Arbeit beendet ist
        fmt.Println("Goroutine", id)
    }(i)
}

wg.Wait() // warten, bis alle Goroutines beendet sind
fmt.Println("Alle Goroutines sind beendet")

Auf diese Weise hilft WaitGroup, die parallele Ausführung zu koordinieren und stellt sicher, dass das Programm nicht vorzeitig beendet wird.