Sobes.tech
Junior — Middle

Como é feita a coordenação do trabalho de várias goroutines em Go?

sobes.tech IA

Resposta da IA

Em Go, a coordenação do trabalho de várias goroutines é geralmente feita usando canais (channels) e o pacote sync.

  • Canais permitem que as goroutines troquem dados e sincronizem a execução, bloqueando o remetente ou o receptor até que estejam prontos.
  • sync.WaitGroup é usado para esperar que um grupo de goroutines termine.
  • Mutex e outras primitivas do sync garantem acesso seguro a recursos compartilhados.

Exemplo de uso de um canal para sincronização:

ch := make(chan int)
func() {
    // Executar trabalho
    ch <- 1 // sinal de conclusão
}()

<-ch // esperar pelo sinal

Dessa forma, canais e primitivas de sincronização permitem coordenar tarefas paralelas de forma eficiente.