Junior — Middle
Como é realizado o controlo da execução e sincronização das goroutines no programa?
sobes.tech IA
Resposta da IA
Em Go, o controlo da execução e sincronização das goroutines é geralmente feito com:
- WaitGroup do pacote
sync— permite esperar que um grupo de goroutines termine. - Canais (channels) — usados para transmitir dados e sinais entre goroutines, garantindo a sincronização.
Exemplo com WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// trabalho da goroutine
}()
wg.Wait() // espera pela conclusão da goroutine
Os canais permitem, por exemplo, transmitir resultados ou sinais de conclusão:
ch := make(chan int)
go func() {
ch <- 42 // envio de valor
}()
valor := <-ch // recepção do valor, sincroniza as goroutines
Assim, WaitGroup e canais são as principais ferramentas para o controlo e sincronização das goroutines.