Junior — Middle
114
Егер бір уақытта картадан мәндерді бәсекелес оқылса, бағдарлама қалай әрекет етеді?
AI-дан жауап
sobes.tech AI
В Go одновременное конкурентное чтение из map безопасно и не приводит к панике или ошибкам. Проблемы возникают, если одновременно происходит запись или чтение и запись. При одновременной записи и чтении из map без синхронизации программа может вызвать runtime panic с сообщением "concurrent map read and map write".
Если в программе только несколько горутин читают значения из map, без изменений, то это безопасно. Но если есть хотя бы одна горутина, которая изменяет map, необходимо использовать механизмы синхронизации, например, 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
}
Таким образом, конкурентное чтение без записи безопасно, но при наличии записи нужна синхронизация.