Junior — Middle
Birden fazla goroutine aynı anda bir haritadaki aynı anahtara erişmeye çalışırsa ne olur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, harita (map) eşzamanlı erişim için güvenli olmayan bir veri yapısıdır. Birden fazla goroutine aynı anda haritaya okuma ve/veya yazma girişiminde bulunursa, bu yarış koşullarına ve muhtemelen çalışma zamanında paniklere yol açar.
Bunu önlemek için, senkronizasyon mekanizmaları kullanmak gerekir, örneğin:
sync.Mutexkullanarak haritaya erişimi kilitlemek.sync.RWMutexkullanarak okuma ve yazma kilitlerini ayırmak.sync.Mapgibi, eşzamanlı erişim için güvenli olan özel yapılar.
sync.Mutex kullanarak haritayı koruma örneği:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
func read(key string) int {
mu.Lock()
defer mu.Unlock()
return m[key]
}