Sobes.tech
Junior — Middle

¿Cómo sincronizar el acceso a un recurso compartido usando una estructura Map y un mecanismo Mutex?

sobes.tech AI

Respuesta de la IA

En Go, para sincronizar el acceso a una estructura compartida Map, generalmente se utiliza un mutex (sync.Mutex), ya que map no es seguro para concurrencia.

Ejemplo:

import (
    "sync"
)

var (
    mu sync.Mutex
    sharedMap = make(map[string]int)
)

func writeToMap(key string, value int) {
    mu.Lock()           // bloquea el acceso
    sharedMap[key] = value
    mu.Unlock()         // desbloquea
}

func readFromMap(key string) (int, bool) {
    mu.Lock()
    val, ok := sharedMap[key]
    mu.Unlock()
    return val, ok
}

De esta manera, antes de leer o escribir en el map, se captura el mutex para evitar condiciones de carrera y garantizar un funcionamiento correcto en entornos concurrentes.