Sobes.tech
Назад к вопросам
Senior
11

В чём разница между Mutex и RWMutex?

Компании, где спрашивали
Алабуга

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

sobes.tech AI

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

RWMutex (Read-Write Mutex) расширяет эту идею, позволяя нескольким горутинам одновременно читать данные (разрешая параллельные операции чтения), но блокируя доступ при записи. То есть:

  • Несколько читателей могут держать блокировку одновременно.
  • Запись возможна только при отсутствии читателей и других писателей.

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

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()           // блокировка для чтения
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()            // блокировка для записи
    defer mu.Unlock()
    data = val
}

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