Junior — Middle
Já utilizou o mecanismo de sincronização com sync.WaitGroup nos seus projetos?
sobes.tech IA
Resposta da IA
Sim, em projetos em Go, frequentemente se usa sync.WaitGroup para sincronizar goroutines. Este mecanismo permite esperar que um grupo de tarefas paralelas seja concluído antes de continuar.
Princípio de funcionamento:
- Cria-se um objeto
WaitGroup. - Antes de iniciar cada goroutine, chama-se
Add(1)para incrementar o contador. - Dentro da goroutine, após concluir o trabalho, chama-se
Done(), que diminui o contador. - A goroutine principal chama
Wait(), que fica bloqueada até que o contador seja zero.
Exemplo:
var wg sync.WaitGroup
wg.Add(2) // esperamos 2 goroutines
go func() {
defer wg.Done()
// trabalho da primeira goroutine
}()
go func() {
defer wg.Done()
// trabalho da segunda goroutine
}()
wg.Wait() // esperamos ambas terminarem
Isso é útil para coordenar operações paralelas e evitar que o programa termine prematuramente.