Sobes.tech
Назад к вопросам
Senior
4

Если map инициализирована один раз при старте и используется только на чтение — нужна ли синхронизация?

Компании, где спрашивали
Small

Ответ от нейросети

sobes.tech AI

Если map инициализирована один раз при старте программы и после этого используется только для чтения, то синхронизация не нужна. В Go чтение из map безопасно для конкурентного доступа, если при этом никто не пишет в эту map. Главное — гарантировать, что запись (инициализация) завершена до начала параллельных чтений.

Пример:

var m map[string]int

func initMap() {
    m = map[string]int{"a": 1, "b": 2}
}

func readMap(key string) int {
    return m[key]
}

func main() {
    initMap() // инициализация до запуска горутин
    // теперь можно безопасно читать из m в нескольких горутинах без мьютексов
}