Sobes.tech
Junior — Middle

Que eventos e sinais podem ser usados para interagir com as goroutines na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, os principais mecanismos utilizados para interagir com goroutines são:

  1. Canais (channels) — a principal forma de transmitir dados e sinais entre goroutines. Através dos canais, é possível enviar e receber valores, o que permite sincronizar o trabalho.
ch := make(chan int)
go func() {
    ch <- 42 // envio de valor
}()
val := <-ch // recepção de valor
  1. Contexto (context.Context) — usado para gerir o tempo de vida das goroutines, cancelar operações e transmitir sinais de cancelamento.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
    select {
    case <-ctx.Done():
        // tratamento de cancelamento
    }
}(ctx)
cancel() // sinal de cancelamento
  1. sync.WaitGroup — para aguardar a conclusão de um grupo de goroutines.

  2. Sinais do sistema operativo — através do pacote os/signal, é possível capturar sinais do sistema e enviá-los às goroutines para uma finalização adequada.

Assim, os "eventos" principais para a interação são as operações de envio/recepção por canais, cancelamento via o contexto e sinais do sistema.