Sobes.tech
Senior

Ar reikalinga sinchronizacija, jei žemėlapis yra inicijuotas vieną kartą pradžioje ir naudojamas tik skaitymui?

sobes.tech AI

Atsakymas iš 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 в нескольких горутинах без мьютексов
}