Sobes.tech
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
}

Мындайча, бир убакта окуу жазбоо менен коопсуз, бирок жазуу учурда синхрондоштуруу талап кылынат.