Junior — Middle
Маалыматтар структурасынан катастрофасыз жана ката кетпестен маалыматтарды окуу мүмкүнбү?
sobes.tech AI
AIден жооп
Goда, картадан окуу коопсуз, эгер ошол учурда эч ким картага өзгөртүүлөр киргизбесе. Бирок, эгер параллелдүү жазуу (кошуу, өчүрүү же элементтерди өзгөртүү) жүрүп жатса, окуу паникага (аткаруу ката) алып келиши мүмкүн.
Көп жиптүү чөйрөдө картадан коопсуз окуу үчүн адатта колдонулат:
- sync.RWMutex — картага жазуу үчүн бөгөт коюу жана параллелдүү окууга уруксат берүү
- sync.Map — атайын жана жиптерге туруктуу структура карта үчүн
RWMutex менен мисал:
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
}
Мындайча, коопсуз окуу жазуу менен синхрондоштурулса, мүмкүн.