Sobes.tech
Junior — Middle

Est-ce que différents threads peuvent interagir avec la même adresse mémoire simultanément?

sobes.tech IA

Réponse de l'IA

Oui, en Go, différentes goroutines (fils d'exécution) peuvent accéder simultanément à la même adresse mémoire. Cependant, cela peut entraîner des conditions de course si l'accès n'est pas synchronisé. Pour interagir en toute sécurité avec la mémoire partagée, on utilise des mécanismes de synchronisation tels que les mutex (sync.Mutex), les canaux (chan) ou les opérations atomiques du paquet sync/atomic.

Exemple d'utilisation d'un mutex pour protéger l'accès à une variable partagée :

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    counter++
    mu.Unlock()
}

Sans ces mesures, l'accès simultané peut entraîner un comportement imprévisible du programme.