Sobes.tech
Junior — Middle

¿Es posible realizar una escritura simultánea de datos en el canal sin usar un búfer?

sobes.tech AI

Respuesta de la IA

En Go, los canales pueden ser con búfer y sin búfer. En un canal sin búfer, la escritura (envío) se bloquea hasta que otra gorutina lea el valor del canal.

No es posible realizar una escritura simultánea en un canal sin búfer, porque el envío se bloquea hasta que se recibe, y solo un remitente puede transmitir datos en un momento dado.

Si se necesita realizar una escritura simultánea sin bloqueo, se utilizan canales con búfer, donde el remitente puede colocar datos en el búfer sin esperar una recepción inmediata.

Ejemplo de un canal sin búfer:

ch := make(chan int) // canal sin búfer

// La escritura se bloquea hasta que alguien lea
ch <- 1

Para escritura simultánea sin bloqueo, se necesita un búfer:

ch := make(chan int, 2) // búfer de 2 elementos
ch <- 1 // no se bloquea
ch <- 2 // no se bloquea

En resumen: sin búfer, la escritura simultánea no es posible.