Junior — Middle
Kā noteikt, ka visas bērnu goroutines ir pabeigušas izpildi Go programmā?
sobes.tech AI
Atbilde no AI
Go valodā parasti tiek izmantota sinhronizācija ar sync.WaitGroup tipu, lai noteiktu visu bērnu gorutīnu pabeigšanu.
Piemērs:
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() // bloķējas, kamēr visas gorutinas neizsauks Done()
fmt.Println("Visas gorutinas ir pabeigtas")
Šādā veidā WaitGroup ļauj galvenajai gorutinei gaidīt visu bērnu gorutīnu pabeigšanu.