Sobes.tech
Senior

Kāpēc mums šajā uzdevumā ir nepieciešams WaitGroup?

sobes.tech AI

Atbilde no AI

WaitGroup Go valodā tiek izmantots gorutinu sinhronizācijai. Darbā, kur tiek palaistas vairāki gorutinas, WaitGroup ļauj galvenajam pavedienam gaidīt, līdz visas palaistās gorutinas ir pabeigtas, pirms turpināt izpildi. Tas novērš programmas priekšlaicīgu iziešanu vai pāreju uz nākamo posmu, kad fona operācijas vēl nav pabeigtas.

Piemērs lietošanai:

var wg sync.WaitGroup
wg.Add(3) // gaidām 3 gorutinas

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signāls par pabeigšanu
        // gorutinas darbs
        fmt.Println("Gorutina", id, "pabeigta")
    }(i)
}

wg.Wait() // gaidām, kamēr visas gorutinas pabeigsies
fmt.Println("Visas gorutinas ir pabeigtas")

Tādējādi, WaitGroup nodrošina pareizu koordināciju un novērš sacensību stāvokļus vai priekšlaicīgu programmas pabeigšanu.