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

Можешь объяснить, что такое взаимное исключение (Mutex) и как оно работает?

Компании, где спрашивали
Астрал-Софт

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

sobes.tech AI

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

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

Пример:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

В этом примере increment безопасно увеличивает значение counter, предотвращая одновременный доступ из нескольких горутин.