Junior — Middle
Kokias funkcijas teikia WaitGroup struktūra Go kalboje gorutinu sinchronizacijai?
sobes.tech AI
Atsakymas iš AI
Go kalboje sync.WaitGroup struktūra naudojama kelių gorutinių sinchronizacijai, leidžianti pagrindinei gorutinei laukti kitų užbaigimo.
Pagrindiniai WaitGroup metodai:
-
Add(delta int)— padidina arba sumažina laukiamų gorutinių skaičių. Paprastai kviečiama prieš pradedant gorutinas. -
Done()— sumažina skaitiklį 1, kviečiama pabaigus gorutinos darbą. -
Wait()— blokuoja vykdymą, kol skaitiklis nepasieks nulio.
Naudojimo pavyzdys:
var wg sync.WaitGroup
wg.Add(3) // laukiame 3 gorutinas
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signalizuoja pabaigą
fmt.Println("Gorutina", id)
}(i)
}
wg.Wait() // laukiame, kol visos gorutinos baigs darbą
fmt.Println("Visos gorutinos baigtos")
Šiuo būdu, WaitGroup padeda koordinuoti paralelų vykdymą ir užtikrina, kad programa nepradės anksčiau laiko.