Sobes.tech
Junior — Middle

W jakich trybach działa mechanizm wzajemnego wykluczania (Mutex)?

sobes.tech AI

Odpowiedź od AI

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

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

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

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

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

var mu sync.Mutex
var counter int

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

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