Junior — Middle
Jakie sytuacje mogą wystąpić podczas jednoczesnego zapisywania do magazynu typu map?
sobes.tech AI
Odpowiedź od AI
W Go standardowa mapa (mapa) nie jest bezpieczna dla współbieżnego odczytu i zapisu z wielu gorutyn. Jeśli kilka gorutyn jednocześnie zapisuje dane do mapy bez synchronizacji, może to prowadzić do panic runtime z komunikatem "concurrent map writes" lub do nieprzewidywalnego zachowania programu.
Aby uniknąć takich problemów, należy używać mechanizmów synchronizacji, takich jak mutex (sync.Mutex) lub specjalistyczne struktury, jak sync.Map, które są bezpieczne dla dostępu współbieżnego.
Przykład z mutex:
var mu sync.Mutex
var m = make(map[string]int)
func writeToMap(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Bez takiej ochrony, jednoczesny zapis może prowadzić do uszkodzenia danych lub awaryjnego zakończenia programu.