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

Следует ли применять блокировки типа Mutex при выполнении операции чтения данных?

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

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

sobes.tech AI

Применение блокировок типа Mutex при чтении данных зависит от контекста:

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

В Go для таких случаев часто используют sync.RWMutex, который позволяет множественные параллельные чтения и эксклюзивную блокировку для записи.

Пример:

var mu sync.RWMutex
var data int

// Чтение
mu.RLock()
value := data
mu.RUnlock()

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

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