Junior — Middle
Como se pode determinar que todas as goroutines filhas terminaram a execução num programa em Go?
sobes.tech IA
Resposta da IA
Em Go, para determinar a conclusão de todas as goroutines filhas, geralmente usa-se sincronização com o tipo sync.WaitGroup.
Exemplo:
var wg sync.WaitGroup
wg.Add(3) // esperamos 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // sinaliza a conclusão
// trabalho da goroutine
fmt.Println("Goroutine", id, "concluída")
}(i)
}
wg.Wait() // bloqueia até que todas as goroutines chamem Done
fmt.Println("Todas as goroutines concluídas")
Assim, WaitGroup permite que a goroutine principal aguarde a conclusão de todas as filhas.