Intern
Go-da xəritəni təhlükəsiz oxumaq mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, map-dən oxumaq, eyni zamanda yazma baş verdikdə, çoxmərhələli təhlükəsiz deyil. Çoxmərhələli mühitdə təhlükəsiz oxumaq üçün sinxronizasiya istifadə edilməlidir, məsələn, sync.RWMutex istifadə edərək oxuma və yazma üçün kilidləmə və ya xüsusi olaraq hazırlanmış sync.Map istifadə etmək.
sync.RWMutex ilə nümunə:
import (
"sync"
)
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) (int, bool) {
mu.RLock() // oxuma kilidi
defer mu.RUnlock() // kilidi aç
val, ok := m[key]
return val, ok
}
func write(key string, val int) {
mu.Lock() // yazma kilidi
defer mu.Unlock() // kilidi aç
m[key] = val
}
Yaxud sync.Map istifadə edin:
import "sync"
var m sync.Map
func read(key string) (interface{}, bool) {
return m.Load(key)
}
func write(key string, val interface{}) {
m.Store(key, val)
}
sync.Map çoxsaylı mübarizə əməliyyatları üçün əlverişlidir, lakin performans və API baxımından öz xüsusiyyətləri var.