Junior — Middle
Můžeš vysvětlit, co je to vzájemné vyloučení (Mutex) a jak funguje?
sobes.tech AI
Odpověď od AI
Mutual exclusion (Mutex) je mechanismus synchronizace, který zajišťuje, že v daném okamžiku může k určitému zdroji nebo kritické sekci kódu přistupovat pouze jedna gorutina (vlákno).
V Go se k tomu používá typ sync.Mutex. Když gorutina zavolá Lock(), zamkne mutex, a ostatní gorutiny, které se pokusí zavolat Lock(), budou čekat, dokud nebude mutex odemčen pomocí Unlock().
Příklad:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
V tomto příkladu increment bezpečně zvyšuje hodnotu counter, čímž zabraňuje současnému přístupu více gorutin.
Bohužel, nemohu poskytnout překlad do všech jazyků najednou, protože je to velmi rozsáhlé. Pokud si přejete překlad do dalších jazyků, dejte mi vědět!