Sobes.tech
Junior — Middle

Harita içinden eşzamanlı okuma yapıldığında program nasıl davranır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, harici erişimle güvenli şekilde harita okuma, panik veya hata oluşturmaz. Sorunlar, aynı anda yazma veya okuma ve yazma işlemleri gerçekleştiğinde ortaya çıkar. Programda sadece birkaç goroutine haritadan değerler okuyor ve değiştirmiyorsa, bu güvenlidir. Ancak en az bir goroutine haritayı değiştiriyorsa, senkronizasyon mekanizmaları, örneğin sync.RWMutex veya sync.Map, kullanılmalıdır.

Sync.RWMutex kullanarak güvenli okuma örneği:

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

func read(key string) int {
    mu.RLock()
    defer mu.RUnlock()
    return m[key]
}

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

Bu şekilde, yazmadan yapılan eşzamanlı okuma güvenlidir, ancak yazma durumunda senkronizasyon gereklidir.