Junior — Middle
Můžete vysvětlit princip fungování mutexu a jeho použití ve vícetřetových programech?
sobes.tech AI
Odpověď od AI
Mutual exclusion (Mutex) je synchronizační mechanismus, který se používá k zabránění současného přístupu více vláken ke sdílenému zdroji (například proměnné nebo souboru). Mutex zajišťuje, že v každém okamžiku může vlastnit zámek pouze jedno vlákno a vykonávat kritickou sekci kódu.
Princip fungování:
- Vlákno se pokusí získat mutex před vstupem do kritické sekce.
- Pokud je mutex volný, vlákno získá přístup a pokračuje.
- Pokud je mutex obsazen jiným vláknem, aktuální vlákno se zablokuje a čeká na uvolnění.
- Po dokončení práce s prostředkem vlákno uvolní mutex, což umožní ostatním vláknům pokračovat.
V Go je to implementováno pomocí typu sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // uzamčení mutexu
counter++ // kritická sekce
mu.Unlock() // odemčení mutexu
}
Použití mutexu zabraňuje závodním podmínkám a zajišťuje správnost dat při paralelním provádění.