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.