Sobes.tech
Junior — Middle

Birden fazla iş parçacığından aynı anda Map'e yazarken güvenliği sağlayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da standart harita (map), birden fazla goroutine'den eşzamanlı yazma işlemleri için güvenli değildir. Eğer birkaç goroutine aynı anda map'e yazıyorsa ve senkronizasyon yoksa, bu panik ile sonuçlanır.

Eşzamanlı yazma güvenliğini sağlamak için:

  • Bir mutex (sync.Mutex veya sync.RWMutex) kullanarak erişimi koruyabilirsiniz.
  • Ayrıca, eşzamanlı erişim için tasarlanmış, sync.Map gibi özel thread-safe veri yapıları kullanabilirsiniz.

Mutex ile örnek:

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

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

Veya sync.Map kullanabilirsiniz:

var m sync.Map

func safeWrite(key string, value int) {
    m.Store(key, value)
}

Bu nedenle, eşzamanlı yazma işlemleri için senkronizasyon kullanmak gerekir.