Junior — Middle
Bir nechta oqimdan Map ga yozish paytida xavfsizlikni ta'minlash mumkinmi?
sobes.tech AI
AIdan javob
Go dasturida standart xarita (map) bir vaqtning o'zida bir nechta goroutinlar tomonidan yozilish uchun xavfsiz emas. Agar bir nechta goroutinlar bir vaqtning o'zida mapga yozayotgan bo'lsa va sinxronizatsiya qilinmasa, bu panikaga olib keladi.
Yozish jarayonida xavfsizlikni ta'minlash uchun:
- sync.Mutex yoki sync.RWMutex kabi mutexdan foydalanib, kirishni himoyalash mumkin.
- Yoki, sync.Map kabi maxsus, bir vaqtning o'zida xavfsiz bo'lgan ma'lumot tuzilmalaridan foydalanish mumkin.
Mutex bilan misol:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Yoki sync.Map dan foydalanish:
var m sync.Map
func safeWrite(key string, value int) {
m.Store(key, value)
}
Shunday qilib, bir vaqtning o'zida yozish xavfsizligini ta'minlash uchun sinxronizatsiya qilish zarur.