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

Что такое Mutex и RWMutex? Чем отличаются?

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

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

sobes.tech AI

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

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

Отличия:

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

Пример:

var mu sync.RWMutex
var data int

// Чтение
mu.RLock()
fmt.Println(data)
mu.RUnlock()

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