Intern
Go'da xarita oqish xavfsizmi?
sobes.tech AI
AIdan javob
Go tilida, mapdan o'qish, yozish bilan bir vaqtda amalga oshirilsa, oqim xavfsiz emas. Ko'p oqimli muhitda xavfsiz o'qish uchun sinxronizatsiya qilish kerak, masalan, sync.RWMutex yordamida o'qish va yozish uchun blokirovka qilish yoki maxsus ishlab chiqilgan sync.Map dan foydalanish.
sync.RWMutex bilan misol:
import (
"sync"
)
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) (int, bool) {
mu.RLock() // o'qish uchun blokirovka
defer mu.RUnlock() // blokirovkani ochish
val, ok := m[key]
return val, ok
}
func write(key string, val int) {
mu.Lock() // yozish uchun blokirovka
defer mu.Unlock() // blokirovkani ochish
m[key] = val
}
Yoki sync.Map dan foydalaning:
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 ko'p raqobatli operatsiyalar uchun qulay, ammo uning ishlash va API xususiyatlari bor.