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