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

Когда RWMutex лучше Mutex

Вопрос

Когда sync.RWMutex действительно выигрывает у sync.Mutex?

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

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

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

Коротко

Правильный ответ: Когда чтений намного больше записей. RWMutex позволяет читателям работать одновременно, но сам дороже: RLock и RUnlock делают атомарные операции над общим счётчиком, который при большом числе ядер становится узким местом.

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

  1. Всегда: RLock дешевле Lock в любом сценарии
  2. Когда записей больше, чем чтений
  3. Когда нужна реентерабельная блокировка чтения
  4. Когда чтений намного больше записейправильный ответ

Разбор

RWMutex позволяет читателям работать одновременно, но сам дороже: RLock и RUnlock делают атомарные операции над общим счётчиком, который при большом числе ядер становится узким местом. При коротких секциях или частых записях обычный Mutex часто не хуже. Реентерабельных мьютексов в Go нет: повторный Lock в той же горутине это дедлок, а RLock при ждущем писателе может застрять.

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

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