Junior — Middle
Xarita ma'lumotlar tuzilmasidan xavfsiz tarzda ma'lumotlarni o'qish mumkinmi?
sobes.tech AI
AIdan javob
Go'da, xaritadan o'qish, agar hozirda hech kim uni o'zgartirmayotgan bo'lsa, xavfsizdir. Biroq, agar parallel ravishda yozish (qo'shish, o'chirish yoki elementlarni o'zgartirish) bo'lsa, o'qish panikaga (ishga tushish xatosi) olib kelishi mumkin.
Ko'p ipli muhitda xaritadan xavfsiz o'qish uchun odatda quyidagilar ishlatiladi:
- sync.RWMutex — xaritani yozish uchun blokirovka qilish va parallel o'qishga ruxsat berish uchun
- sync.Map — maxsus va xavfsiz ma'lumotlar tuzilmasi
RWMutex bilan misol:
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) (int, bool) {
mu.RLock()
defer mu.RUnlock()
val, ok := m[key]
return val, ok
}
func write(key string, val int) {
mu.Lock()
defer mu.Unlock()
m[key] = val
}
Shunday qilib, xavfsiz o'qish yozish bilan sinxronlashtirilgan bo'lsa, mumkin.