Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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, предотвратявайки едновременен достъп от няколко горутини.