Sobes.tech
Назад к вопросам
Junior — Middle
79

Объясните, что такоеRead-Write блокировка (RWMutex) и как она используется для управления доступом к данным?

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

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

sobes.tech AI

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

  • RLock() / RUnlock() — блокировка для чтения. Несколько горутин могут одновременно держать такую блокировку.
  • Lock() / Unlock() — блокировка для записи. Только одна горутина может держать её, и при этом никакие чтения не разрешены.

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

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

var rwMutex sync.RWMutex
var data int

func readData() int {
    rwMutex.RLock()
    defer rwMutex.RUnlock()
    return data
}

func writeData(val int) {
    rwMutex.Lock()
    defer rwMutex.Unlock()
    data = val
}

В этом примере несколько горутин могут одновременно вызывать readData(), но если вызывается writeData(), она блокирует все чтения и записи до завершения.