Что такое Lock у Mutex

«Что такое Lock у Mutex» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

var mu sync.Mutex
var sharedData int

func increment() {
    mu.Lock()         // Захватываем блокировку
    sharedData++      // Безопасная работа с sharedData
    mu.Unlock()       // Освобождаем блокировку
}

Важно:

  • Всегда освобождайте Mutex через Unlock(), иначе deadlock
  • Используйте defer mu.Unlock() для гарантированного освобождения
  • Не держите блокировку дольше необходимого (минимизируйте критические секции)