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