Выбор ответа Senior sync и атомики обновлено

Когда использовать sync.Map

Вопрос

Для какого сценария sync.Map подходит лучше, чем map под sync.RWMutex?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ключ пишется раз и много читается, или ключи у горутин не пересекаются. Документация прямо называет два сценария: write-once read-many и непересекающиеся ключи.

Варианты ответа

  1. Частые записи и удаления одних и тех же ключей из многих горутин сразу
  2. Ключ пишется раз и много читается, или ключи у горутин не пересекаютсяправильный ответ
  3. Когда нужна типобезопасность ключей и значений без приведений
  4. Когда нужно получать len мапы за O(1) без обхода и блокировок

Разбор

Документация прямо называет два сценария: write-once read-many и непересекающиеся ключи. Там sync.Map избегает блокировок на чтение. При частой перезаписи одних ключей она не быстрее, а то и медленнее. Она не типобезопасна (ключи и значения any) и не имеет len. В Go 1.24 её реализацию перевели на конкурентное HashTrieMap, но рекомендации по применению не изменились.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.