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]
}