Junior
Kā programmēšanas valodā (Go) noteikt, ka visi palaistie pavedieni ir pabeiguši darbu un vadības pavediens var izmantot rezultātus?
sobes.tech AI
Atbilde no AI
Go valodā parasti izmanto sync.WaitGroup tipu, lai uzraudzītu visu darbojošo gorutīnu pabeigšanu. Tas ļauj galvenajam pavedienam gaidīt, kamēr visas gorutīnas pabeigs savu izpildi.
Piemērs lietošanai:
var wg sync.WaitGroup
wg.Add(3) // gaidām 3 gorutīnas
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signalizē par gorutīnas pabeigšanu
// gorutīnas darbs
fmt.Println("Gorutīna", id, "pabeigta")
}(i)
}
wg.Wait() // galvenais pavedienu bloķē, līdz skaitītājs wg sasniedz 0
fmt.Println("Visas gorutīnas ir pabeigtas, rezultāti ir pieejami")
Šādā veidā WaitGroup ļauj sinhronizēt izpildi un nodrošina, ka vadības pavediens gaidīs visu paralēlo uzdevumu pabeigšanu.