Sobes.tech
Senior

Warum brauchen wir in dieser Aufgabe eine WaitGroup?

sobes.tech KI

Antwort von AI

WaitGroup in Go wird verwendet, um Goroutinen zu synchronisieren. Bei Aufgaben, bei denen mehrere Goroutinen gestartet werden, ermöglicht der WaitGroup dem Haupt-Thread, auf den Abschluss aller gestarteten Goroutinen zu warten, bevor die Ausführung fortgesetzt wird. Dies verhindert, dass das Programm vorzeitig beendet wird oder zum nächsten Schritt übergeht, wenn Hintergrundoperationen noch nicht abgeschlossen sind.

Beispiel für die Verwendung:

var wg sync.WaitGroup
wg.Add(3) // warten auf 3 Goroutinen

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

wg.Wait() // auf Abschluss aller Goroutinen warten
fmt.Println("Alle Goroutinen sind abgeschlossen")

Auf diese Weise sorgt der WaitGroup für eine korrekte Koordination und verhindert Rennbedingungen oder ein vorzeitiges Beenden des Programms.