Назад к вопросам
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, то даже чтение будет блокировать другие операции, что может снизить производительность при частых чтениях.