Sobes.tech
Junior — Middle

Comment synchroniser l'accès à une ressource partagée en utilisant une structure Map et un mécanisme Mutex?

sobes.tech IA

Réponse de l'IA

En Go, pour synchroniser l'accès à une structure partagée Map, on utilise généralement un mutex (sync.Mutex), car la map n'est pas sûre pour la concurrence.

Exemple:

import (
    "sync"
)

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

func writeToMap(key string, value int) {
    mu.Lock()           // verrouille l'accès
    sharedMap[key] = value
    mu.Unlock()         // déverrouille
}

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

Ainsi, avant de lire ou d'écrire dans la map, on verrouille le mutex pour éviter les conditions de course et assurer un fonctionnement correct dans un environnement concurrent.