Junior — Middle
Как да синхронизираме достъпа до споделен ресурс с помощта на структура Map и механизма Mutex?
sobes.tech AI
Отговор от AI
В Go за синхронизиране на достъпа до споделена структура Map обикновено се използва мьютекс (sync.Mutex), тъй като map не е безопасна за многопоточна употреба.
Пример:
import (
"sync"
)
var (
mu sync.Mutex
sharedMap = make(map[string]int)
)
func writeToMap(key string, value int) {
mu.Lock() // заключва достъпа
sharedMap[key] = value
mu.Unlock() // отключва
}
func readFromMap(key string) (int, bool) {
mu.Lock()
val, ok := sharedMap[key]
mu.Unlock()
return val, ok
}
По този начин, преди да прочетем или запишем в map, заключваме мьютекса, за да избегнем състезателни условия и да осигурим коректна работа в конкурентна среда.