Назад к вопросам
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, предотвращая одновременный доступ из нескольких горутин.