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.