Sobes.tech
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.