Sobes.tech
Назад к вопросам
Middle+
3

Чем отличается RWMutex от обычного Mutex?

Компании, где спрашивали
Magnit Tech

Ответ от нейросети

sobes.tech AI

Mutex — это обычная мьютекс-блокировка, которая обеспечивает эксклюзивный доступ к ресурсу: в один момент времени только один горутина может захватить мьютекс.

RWMutex (Read-Write Mutex) расширяет функциональность, позволяя:

  • Одновременно захватывать блокировку на чтение несколькими горутинами (много читателей).
  • Захватывать блокировку на запись только одной горутиной, при этом блокируя всех читателей и других писателей.

Таким образом, RWMutex повышает производительность в сценариях, где операций чтения гораздо больше, чем записи, позволяя параллельно читать данные без взаимных блокировок.

Пример использования:

var mu sync.RWMutex
var data int

// Чтение
mu.RLock()
value := data
mu.RUnlock()

// Запись
mu.Lock()
data = 42
mu.Unlock()

Если использовать обычный Mutex, то даже чтение будет блокировать другие операции, что может снизить производительность при частых чтениях.