Back to questions
Middle+
4
Чем отличается RWMutex от обычного Mutex?
Companies where asked
Magnit Tech
Answer from AI
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, то даже чтение будет блокировать другие операции, что может снизить производительность при частых чтениях.