Назад к вопросам
Junior — Middle
75
Применяли ли вы механизм пессимистической блокировки в своих проектах?
Компании, где спрашивали
IDS
Ответ от нейросети
sobes.tech AI
Да, в проектах на Go я применял пессимистическую блокировку, когда нужно было гарантировать эксклюзивный доступ к ресурсу.
Пессимистическая блокировка предполагает, что при работе с общими данными мы блокируем доступ другим горутинам до завершения операции, чтобы избежать конфликтов.
В Go для этого обычно используют:
sync.Mutex— мьютекс для взаимного исключения.sync.RWMutex— для разделения блокировок на чтение и запись.
Пример использования sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Такой подход помогает избежать гонок данных, но может снизить параллелизм, поэтому важно использовать блокировки осмотрительно.