Sobes.tech
Senior

Miks meil on selle ülesande jaoks vaja WaitGroup?

sobes.tech AI

Vastus AI-lt

WaitGroup in Go kasutatakse gorutinide sünkroniseerimiseks. Töös, kus käivitatakse mitu gorutinat, võimaldab WaitGroup peamisel lõigul oodata kõigi käivitatud gorutinate lõpetamist enne jätkamist. See takistab programmi enneaegset väljumist või järgmisele etapile üleminekut, kui taustategevused pole veel lõppenud.

Kasutusnäide:

var wg sync.WaitGroup
wg.Add(3) // ootame 3 gorutinat

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signaal lõpetamisest
        // gorutina töö
        fmt.Println("Gorutina", id, "lõpetatud")
    }(i)
}

wg.Wait() // ootame, kuni kõik gorutina lõpevad
fmt.Println("Kõik gorutina lõppesid")

Nii tagab WaitGroup õige koordineerimise ja takistab võistlusolukordi või programmi enneaegset lõpetamist.