Sobes.tech
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.Mutex kullanarak haritaya erişimi kilitlemek.
  • sync.RWMutex kullanarak okuma ve yazma kilitlerini ayırmak.
  • sync.Map gibi, 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]
}