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