Junior — Middle
Můžeš vysvětlit, jaké typy zámků existují a jak fungují v vícevláknovém programování?
sobes.tech AI
Odpověď od AI
V programování více vláken existují různé typy zámků, které pomáhají synchronizovat přístup ke sdíleným zdrojům:
- Mutex (Mutuální vyloučení) — zajišťuje exkluzivní přístup ke zdroji. Pouze jedno vlákno může v daném okamžiku získat mutex.
- Rekurzivní mutex — umožňuje stejnému vláknu získat zámek vícekrát bez vzájemného blokování.
- Zámek čtení-zápisu (Read-Write Lock) — umožňuje více vláknům současně číst zdroj, ale zápis je možný pouze exkluzivně.
- Semafor — omezuje počet vláken, která mohou současně získat přístup ke zdroji.
- Spinlock (aktivní čekání) — vlákno v cyklu kontroluje dostupnost zámku, aniž by přecházelo do stavu čekání.
Příklad použití mutexu ve Swift:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Kritická sekce
lock.unlock()
}
Volba typu zámku závisí na úkolu a požadavcích na výkon a bezpečnost.