Junior — Middle
Vai, īstenojot savu programmu, izmantojāt waitgroup sinhronizācijas mehānismu?
sobes.tech AI
Atbilde no AI
Jā, Go valodā sync.WaitGroup mehānisms bieži tiek izmantots vairāku gorutīnu sinhronizācijai. Tas ļauj galvenajai gorutīnai gaidīt paralēlo uzdevumu pabeigšanu.
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
fmt.Printf("Gorutina %d darbojas\n", id)
// kāds darbs
}(i)
}
wg.Wait() // gaidām, līdz visi Done izsaukumi ir pabeigti
fmt.Println("Visas gorutinas ir pabeigtas")
Tādējādi, WaitGroup palīdz pareizi pārvaldīt paralēlismu un nodrošina, ka programma nebeigsies agrāk nekā vajadzētu.