Junior — Middle
Môžeš vysvetliť, aké typy zámkov existujú a ako fungujú v viacvláknovom programovaní?
sobes.tech AI
Odpoveď od AI
V viacvláknovom programovaní existujú rôzne typy zámkov, ktoré pomáhajú synchronizovať prístup ku spoločným zdrojom:
- Mutex (Mutuálna Exklúzia) — zabezpečuje exkluzívny prístup ku zdroju. Len jedno vlákno môže získať mutex v danom momente.
- Rekurzívny mutex — umožňuje rovnakému vláknu získať zámok viackrát bez vzájomného blokovania.
- Zámok na čítanie a zápis (Read-Write Lock) — umožňuje viacerým vláknam čítať zdroj súčasne, ale zápis je možný iba exkluzívne.
- Semafor — obmedzuje počet vlákien, ktoré môžu súčasne získať prístup ku zdroju.
- Spinlock (aktívne čakanie) — vlákno v cykle kontroluje dostupnosť zámku, bez prechodu do stavu čakania.
Príklad použitia mutexu v Swift:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Kritická sekcia
lock.unlock()
}
Výber typu zámku závisí od úlohy a požiadaviek na výkon a bezpečnosť.