Senior
Miért van szükségünk a WaitGroup-re ebben a feladatban?
sobes.tech MI
Válasz az MI-től
A WaitGroup a Go nyelvben a goroutine-ok szinkronizálására szolgál. Olyan feladatoknál, ahol több goroutine indul el, a WaitGroup lehetővé teszi, hogy a fő szál megvárja, amíg az összes indított goroutine be nem fejeződik, mielőtt folytatná a végrehajtást. Ez megakadályozza, hogy a program korán kilépjen vagy a következő lépésre lépjen, amikor a háttérműveletek még nem fejeződtek be.
Használati példa:
var wg sync.WaitGroup
wg.Add(3) // 3 goroutine várása
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // befejezés jelzése
// goroutine munka
fmt.Println("Goroutine", id, "befejeződött")
}(i)
}
wg.Wait() // várunk minden goroutine befejezésére
fmt.Println("Minden goroutine befejeződött")
Így a WaitGroup biztosítja a helyes koordinációt és megakadályozza a versenyhelyzeteket vagy a program korai befejezését.