Junior — Middle
Como é que a troca de sinais é realizada através de canais no sistema de programação?
sobes.tech IA
Resposta da IA
Na linguagem Go (Golang), os canais são utilizados para trocar sinais e dados entre goroutines, garantindo sincronização e comunicação.
Um canal é um conduto tipado através do qual se podem enviar e receber valores. Enviar e receber num canal bloqueia a goroutine até que a outra parte esteja pronta para aceitar ou enviar dados, permitindo sincronizar a execução de forma eficiente.
Exemplo de troca de sinais usando um canal:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Println("O trabalho começou")
time.Sleep(time.Second) // simulação de trabalho
fmt.Println("O trabalho terminou")
done <- true // enviamos o sinal de conclusão
}
func main() {
done := make(chan bool)
go worker(done) // inicia a goroutine
<-done // espera pelo sinal de conclusão
fmt.Println("A função principal terminou")
}
Neste exemplo, o canal done é usado para transmitir o sinal de conclusão da goroutine worker. A função principal bloqueia na leitura do canal até receber o sinal, permitindo sincronizar corretamente a execução.