Sobes.tech
Junior — Middle

Qual é o papel e a finalidade da estrutura WaitGroup no desenvolvimento em Go?

sobes.tech IA

Resposta da IA

No Go, a estrutura WaitGroup é usada para sincronizar várias goroutines. Ela permite que a goroutine principal espere pela conclusão de um grupo de outras goroutines.

Métodos principais:

  • Add(int): aumenta o contador de goroutines esperadas.
  • Done(): diminui o contador em 1, chamado ao final de uma goroutine.
  • Wait(): bloqueia a execução até que o contador chegue a 0.

Exemplo de uso:

var wg sync.WaitGroup
wg.Add(2) // esperamos 2 goroutines

go func() {
    defer wg.Done()
    // trabalho da goroutine 1
}()

go func() {
    defer wg.Done()
    // trabalho da goroutine 2
}()

wg.Wait() // esperamos a conclusão de ambas as goroutines

Assim, o WaitGroup ajuda a gerenciar corretamente a execução paralela e a espera pela conclusão das tarefas.