Sobes.tech
Junior — Middle

Mutex türü kilit mekanizması kullanarak Map nesnesinin eşzamanlılık güvenliğini nasıl sağlayabilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, map nesnesinin iş parçacığı güvenliğini sağlamak için sync.Mutex kullanılabilir. Standart map eşzamanlı erişime karşı güvenli olmadığından, okuma ve yazma işlemlerini kilitlemek gerekir.

Örnek:

import (
    "sync"
)

type SafeMap struct {
    mu sync.Mutex
    m  map[string]int
}

func NewSafeMap() *SafeMap {
    return &SafeMap{
        m: make(map[string]int),
    }
}

func (s *SafeMap) Get(key string) (int, bool) {
    s.mu.Lock()
    defer s.mu.Unlock()
    val, ok := s.m[key]
    return val, ok
}

func (s *SafeMap) Set(key string, value int) {
    s.mu.Lock()
    defer s.mu.Unlock()
    s.m[key] = value
}

func (s *SafeMap) Delete(key string) {
    s.mu.Lock()
    defer s.mu.Unlock()
    delete(s.m, key)
}

Bu şekilde, her map işlemi öncesinde mutex kilitlenir, bu da birden fazla goroutine'nin eşzamanlı erişimini engeller ve yarış durumu riskini ortadan kaldırır.