Sobes.tech
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.