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.