Sobes.tech
Middle — Middle+

Çok iş parçacıklı ortamda ek senkronizasyon olmadan map konteynerine güvenli bir şekilde yazma yapılabilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da standart harita (map) eşzamanlı ortamlar için güvenli değildir. Birden fazla goroutine aynı anda haritaya yazarken senkronizasyon olmadan, yarış durumlarına ve çalışma zamanında paniklere yol açar.

Çok iş parçacıklı ortamda haritaya güvenli yazmak için şunları kullanmalısınız:

  • erişimi kilitlemek için sync.Mutex veya sync.RWMutex;
  • standart kütüphaneden eşzamanlı güvenli bir harita uygulaması olan sync.Map.

sync.Mutex ile örnek:

var mu sync.Mutex
var m = make(map[string]int)

func safeWrite(key string, value int) {
    mu.Lock()
    m[key] = value
    mu.Unlock()
}

Bu senkronizasyon olmadan, haritaya yazmak güvenli değildir.