Back to questions
Junior — Middle
82
В каких режимах функционирует механизм взаимной блокировки (Mutex)?
Answer from AI
sobes.tech AI
Механизм взаимной блокировки (Mutex) в Go функционирует в двух основных режимах:
-
Locked (заблокирован) — когда один поток (горутинa) захватывает мьютекс, другие горутины, пытающиеся захватить этот же мьютекс, блокируются и ждут освобождения.
-
Unlocked (разблокирован) — когда мьютекс свободен и доступен для захвата.
Mutex обеспечивает эксклюзивный доступ к разделяемым ресурсам, предотвращая одновременное выполнение критической секции кода несколькими горутинами.
Пример использования:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // захватываем мьютекс
defer mu.Unlock() // освобождаем мьютекс после выполнения
counter++
}
Таким образом, мьютекс работает в режиме блокировки и разблокировки, обеспечивая последовательный доступ к данным.