Вопросы с собеседований по Go и ответы на них.
Учиться у нас: clc.to/iEeaZw
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
Наши каналы: https://t.me/proglibrary/9197
Post #1405
1.32K
❓ У вас есть
Go рантайм с версии 1.6 содержит детектор конкурентных записей в map. При одновременной записи из нескольких горутин программа завершится с паникой
Но детектор срабатывает не всегда: он вероятностный. Поэтому полагаться на него как на защиту нельзя.
Правильные решения в зависимости от нагрузки:
🐸 Библиотека Go для собеса
map[int]Record. Несколько горутин читают и пишут в него одновременно. Что произойдётGo рантайм с версии 1.6 содержит детектор конкурентных записей в map. При одновременной записи из нескольких горутин программа завершится с паникой
concurrent map writes — намеренно, чтобы не допустить повреждения данных.Но детектор срабатывает не всегда: он вероятностный. Поэтому полагаться на него как на защиту нельзя.
Правильные решения в зависимости от нагрузки:
sync.RWMutex вокруг map, sync.Map для случаев с редкими записями и частыми чтениями, или шардирование — несколько map с отдельными мьютексами.🐸 Библиотека Go для собеса



