Junior — Middle
Kādas funkcijas nodrošina struktūra WaitGroup Go valodā gorutīnu sinhronizācijai?
sobes.tech AI
Atbilde no AI
Go valodā struktūra sync.WaitGroup tiek izmantota vairāku gorutīnu sinhronizācijai, ļaujot galvenajai gorutīnai gaidīt citu pabeigšanu.
Galvenās WaitGroup metodes:
-
Add(delta int)— palielina vai samazina gaidāmo gorutīnu skaitu. Parasti tiek izsaukta pirms gorutīnu palaišanas. -
Done()— samazina skaitītāju par 1, tiek izsaukta gorutīnas darba beigās. -
Wait()— bloķē izpildi līdz skaitītājs sasniedz nulli.
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() // signalizē par pabeigšanu
fmt.Println("Gorutina", id)
}(i)
}
wg.Wait() // gaidām, līdz visas gorutinas pabeidz darbu
fmt.Println("Visas gorutinas ir pabeigtas")
Tādējādi, WaitGroup palīdz koordinēt paralēlo izpildi un nodrošina, ka programma nebeigsies pārāk agri.