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