Junior — Middle
¿Cómo garantizar un acceso seguro a la tarjeta en un entorno multihilo?
sobes.tech AI
Respuesta de la IA
En Go, para acceder de manera segura a un mapa (map) en un entorno multihilo, es necesario utilizar sincronización, ya que map no es una estructura de datos segura para múltiples hilos. La forma más común es usar un mutex (sync.Mutex o sync.RWMutex) para bloquear el acceso durante la lectura y escritura.
Ejemplo usando sync.RWMutex:
import (
"sync"
)
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) int {
mu.RLock() // bloquea para lectura
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock() // bloquea para escritura
defer mu.Unlock()
m[key] = value
}
También en Go existe el tipo sync.Map, que implementa un mapa seguro para múltiples hilos con optimizaciones para operaciones frecuentes de lectura. Se puede usar si no se necesita una tipificación estricta y se busca simplicidad:
import "sync"
var m sync.Map
m.Store("key", 42) // escritura
value, ok := m.Load("key") // lectura
Por lo tanto, para acceder de forma segura a un map en un entorno multihilo, use mutexes o sync.Map.