Sobes.tech
Junior — Middle

Môžeš vysvetliť, čo je vzájomné vylúčenie (Mutex) a ako funguje?

sobes.tech AI

Odpoveď od AI

Mutual exclusion (Mutex) je mechanizmus synchronizácie, ktorý zabezpečuje, že v danom momente môže k určitému zdroju alebo kritickej sekcii kódu pristupovať iba jedna gorutina (vlákno).

V Go sa na to používa typ sync.Mutex. Keď gorutina zavolá Lock(), zamkne mutex, a ďalšie gorutiny, ktoré sa pokúsia zavolať Lock(), budú čakať, kým nebude mutex odomknutý pomocou Unlock().

Príklad:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

V tomto príklade increment bezpečne zvyšuje hodnotu counter, čím zabraňuje súčasnému prístupu viacerých gorutín.