Junior — Middle
Hogyan lehet meghatározni, hogy minden gyermek goroutine befejeződött-e egy Go programban?
sobes.tech MI
Válasz az MI-től
Go-ban általában a sync.WaitGroup típus segítségével szinkronizálással határozzuk meg az összes gyermek goroutine befejezését.
Példa:
var wg sync.WaitGroup
wg.Add(3) // 3 goroutine várása
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // befejezés jelzése
// goroutine munkája
fmt.Println("Goroutine", id, "befejeződött")
}(i)
}
wg.Wait() // blokkol, amíg minden goroutine meghívja a Done-t
fmt.Println("Minden goroutine befejeződött")
Így a WaitGroup lehetővé teszi, hogy a fő goroutine várjon minden gyermek goroutine befejezésére.