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:
- 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
- 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
-
sync.WaitGroup — para aguardar a conclusão de um grupo de goroutines.
-
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.