Junior — Middle
Çok iş parçacıklı bir ortamda karta güvenli erişimi nasıl sağlayabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, çok iş parçacıklı ortamda bir haritaya (map) güvenli erişim için senkronizasyon kullanmak gerekir, çünkü map çok iş parçacıklı güvenli olmayan bir veri yapısıdır. En yaygın yöntem, okuma ve yazma sırasında erişimi kilitlemek için bir mutex (sync.Mutex veya sync.RWMutex) kullanmaktır.
sync.RWMutex kullanımıyla örnek:
import (
"sync"
)
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) int {
mu.RLock() // okuma için kilitler
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock() // yazma için kilitler
defer mu.Unlock()
m[key] = value
}
Ayrıca, Go dilinde sync.Map tipi de vardır, bu tip yüksek performanslı okuma işlemleri için optimize edilmiş güvenli bir harita sağlar. Eğer katı tip gerekmiyorsa ve basitlik isteniyorsa kullanılabilir:
import "sync"
var m sync.Map
m.Store("key", 42) // yazma
value, ok := m.Load("key") // okuma
Bu nedenle, çok iş parçacıklı ortamda güvenli erişim için mutexler veya sync.Map kullanın.