Junior — Middle
Que funções são fornecidas pela estrutura WaitGroup na linguagem Go para sincronização de goroutines?
sobes.tech IA
Resposta da IA
Na linguagem Go, a estrutura sync.WaitGroup é usada para sincronizar várias goroutines, permitindo que a goroutine principal aguarde a conclusão de outras.
Principais métodos do WaitGroup:
-
Add(delta int)— aumenta ou diminui o contador de goroutines esperadas. Geralmente chamado antes de iniciar as goroutines. -
Done()— diminui o contador em 1, chamado ao final do trabalho da goroutine. -
Wait()— bloqueia a execução até que o contador seja zero.
Exemplo de uso:
var wg sync.WaitGroup
wg.Add(3) // esperamos 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // sinaliza o término
fmt.Println("Goroutine", id)
}(i)
}
wg.Wait() // espera todas as goroutines terminarem
fmt.Println("Todas as goroutines terminaram")
Assim, WaitGroup ajuda a coordenar a execução paralela e garante que o programa não termine prematuramente.