Junior — Middle
¿Puede explicar qué son los canales sincrónicos y cómo funcionan en programación?
sobes.tech AI
Respuesta de la IA
Los canales sincrónicos en programación, especialmente en Go, son canales que bloquean al remitente hasta que el receptor lea los datos, y viceversa. Es decir, la transferencia de datos solo ocurre cuando ambas partes están listas.
En Go, un canal sin búfer es sincrónico. Ejemplo:
ch := make(chan int) // canal sincrónico
// Envío
go func() {
ch <- 42 // se bloquea hasta que alguien lea
}()
// Recepción
val := <-ch // se bloquea hasta que alguien envíe
fmt.Println(val)
Aquí, el envío en el canal ch esperará hasta que otra gorutina lea el valor, y viceversa. Esto permite sincronizar la ejecución de gorutinas e intercambiar datos sin usar mecanismos adicionales de sincronización.