Junior — Middle
Kako odrediti da su sve ćerke goroutine završile izvršavanje u programu na jeziku Go?
sobes.tech АИ
Одговор од АИ
U Go-u, za određivanje završetka svih dečjih gorutina, obično se koristi sinhronizacija pomoću tipa sync.WaitGroup.
Primer:
var wg sync.WaitGroup
wg.Add(3) // očekujemo 3 gorutine
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signaliziramo završetak
// rad gorutine
fmt.Println("Gorutina", id, "završena")
}(i)
}
wg.Wait() // blokira dok sve gorutine ne pozovu Done
fmt.Println("Sve gorutine su završene")
Na ovaj način, WaitGroup omogućava glavnoj gorutini da sačeka završetak svih dečjih gorutina.