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