Junior — Middle
¿Cómo garantizar una escritura segura de datos en un canal desde varias goroutines sin usar bloqueo?
sobes.tech AI
Respuesta de la IA
En Go, para escribir datos de forma segura en un canal desde varias goroutines sin usar bloqueos, generalmente basta con usar el propio canal, ya que los canales en Go son seguros para concurrencia por defecto.
Ejemplo:
ch := make(chan int)
// Escritura en el canal desde varias goroutines
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // escritura segura
}(i)
}
// Lectura del canal
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Si necesitas garantizar que la escritura no se bloquee, puedes usar un canal con búfer. De esta forma, no se necesitan bloqueos manuales, ya que el canal proporciona sincronización.