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