Junior — Middle
¿Se permite enviar mensajes a un solo canal con múltiples goroutines al mismo tiempo?
sobes.tech AI
Respuesta de la IA
Sí, en Go está permitido enviar mensajes a un canal desde varias goroutines simultáneamente. Los canales en Go son seguros para concurrencia y proporcionan sincronización entre goroutines.
Sin embargo, es importante recordar:
- Si varias goroutines escriben en un mismo canal y nadie lo lee, esto provocará un bloqueo.
- Si el canal está enrutado, las escrituras solo se bloquearán cuando se llene el búfer.
- Es necesario gestionar cuidadosamente el cierre del canal: solo el remitente debe cerrarlo, y solo cuando esté seguro de que no habrá más escrituras.
Ejemplo:
ch := make(chan int)
// Ejecutar varias goroutines enviando datos al canal
for i := 0; i < 3; i++ {
go func(id int) {
ch <- id
}(i)
}
// Leer del canal
for i := 0; i < 3; i++ {
fmt.Println(<-ch)
}
De esta forma, enviar datos simultáneamente a un canal desde varias goroutines es una práctica estándar en Go.