Junior — Middle
¿Cómo se realiza el intercambio de señales mediante canales en el sistema de programación?
sobes.tech AI
Respuesta de la IA
En el lenguaje Go (Golang), los canales se utilizan para intercambiar señales y datos entre goroutines, asegurando la sincronización y comunicación.
Un canal es un conducto tipado a través del cual se pueden enviar y recibir valores. El envío y la recepción en un canal bloquean la goroutine hasta que la otra parte esté lista para aceptar o enviar datos, lo que permite sincronizar la ejecución de manera eficiente.
Ejemplo de intercambio de señales usando un canal:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Println("El trabajo ha comenzado")
time.Sleep(time.Second) // simulación de trabajo
fmt.Println("El trabajo ha terminado")
done <- true // enviamos la señal de finalización
}
func main() {
done := make(chan bool)
go worker(done) // iniciamos la goroutine
<-done // esperamos la señal de finalización
fmt.Println("La función principal ha terminado")
}
En este ejemplo, el canal done se usa para transmitir la señal de finalización de la goroutine worker. La función principal se bloquea en la lectura del canal hasta recibir la señal, lo que permite sincronizar correctamente la ejecución.