Sobes.tech
Junior — Middle

Podem diferentes threads interagir com o mesmo endereço de memória ao mesmo tempo?

sobes.tech IA

Resposta da IA

Sim, em Go, diferentes goroutines (threads) podem aceder simultaneamente ao mesmo endereço de memória. No entanto, isso pode levar a condições de corrida se o acesso não for sincronizado. Para interagir de forma segura com a memória partilhada, utilizam-se mecanismos de sincronização, como mutexes (sync.Mutex), canais (chan) ou operações atómicas do pacote sync/atomic.

Exemplo de uso de um mutex para proteger o acesso a uma variável partilhada:

var mu sync.Mutex
var counter int

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

Sem estas medidas, o acesso simultâneo pode levar a comportamentos imprevisíveis no programa.