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