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.