Sobes.tech
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.