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.