Junior — Middle
Картадан маанилерди бир убакта атаандаштык менен окуп жатса программа кандай иштейт?
sobes.tech AI
AIден жооп
Go тилинде, картадан бир убакта коопсуз окулушу паника же каталарга алып келбейт. Мүчүлүштүктөр, эгер бир убакта жазуу же окуу жана жазуу жүргүзүлсө, пайда болот. Эгер программда бир нече горутин картадан маанилерди окуп жатса жана аларды өзгөртпөсө, бул коопсуз. Бирок кеминде бир горутин картага өзгөртүү киргизсе, синхрондоштуруу механизмдери, мисалы, sync.RWMutex же sync.Map колдонушу керек.
Коопсуз окуу мисалы, sync.RWMutex колдонуу:
var m = make(map[string]int)
var mu sync.RWMutex
func read(key string) int {
mu.RLock()
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Мындайча, бир убакта окуу жазбоо менен коопсуз, бирок жазуу учурда синхрондоштуруу талап кылынат.