Sobes.tech
Back to questions
Junior — Middle
82

В каких режимах функционирует механизм взаимной блокировки (Mutex)?

Answer from AI

sobes.tech AI

Механизм взаимной блокировки (Mutex) в Go функционирует в двух основных режимах:

  1. Locked (заблокирован) — когда один поток (горутинa) захватывает мьютекс, другие горутины, пытающиеся захватить этот же мьютекс, блокируются и ждут освобождения.

  2. Unlocked (разблокирован) — когда мьютекс свободен и доступен для захвата.

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

Пример использования:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()           // захватываем мьютекс
    defer mu.Unlock()   // освобождаем мьютекс после выполнения
    counter++
}

Таким образом, мьютекс работает в режиме блокировки и разблокировки, обеспечивая последовательный доступ к данным.