Junior — Middle
¿Qué técnicas de uso de bloqueos u otros mecanismos para prevenir el acceso simultáneo a los datos conoces?
sobes.tech AI
Respuesta de la IA
Las técnicas principales para prevenir el acceso concurrente a los datos en Go:
- Mutex (sync.Mutex): bloqueo de la sección crítica para que solo un hilo pueda trabajar con los datos.
var mu sync.Mutex
mu.Lock()
// trabajo con datos compartidos
mu.Unlock()
-
RWMutex (sync.RWMutex): permite que varios lectores lean datos simultáneamente, pero bloquea la escritura.
-
Canales (channels): transmisión de datos entre goroutines, lo que evita el acceso directo a datos compartidos.
-
Operaciones atómicas (sync/atomic): para operaciones simples con variables sin bloqueo completo.
-
sync.Once: para inicialización única de datos.
La elección del mecanismo depende de la tarea: para exclusión mutua simple — Mutex, para separar lectura y escritura — RWMutex, para transmisión de mensajes — canales.