Sobes.tech
Junior — Middle

Можеш ли објаснити које типове блокирања постоје и како они функционишу у мулти-тред програмирању?

sobes.tech АИ

Одговор од АИ

U višestrukom programiranju postoje različite vrste blokada koje pomažu u sinhronizaciji pristupa zajedničkim resursima:

  • Mutex (Mutual Exclusion) — obezbeđuje ekskluzivni pristup resursu. Samo jedan tok može da zauzme mutex u datom trenutku.
  • Rekurzivni mutex — omogućava istom toku da više puta zauzme blokadu bez međusobnog blokiranja.
  • Blokada za čitanje i pisanje (Read-Write Lock) — omogućava više tokova da istovremeno čitaju resurs, ali zapis je moguć samo ekskluzivno.
  • Semafor — ograničava broj tokova koji mogu istovremeno pristupiti resursu.
  • Spinlock (aktivno čekanje) — tok u petlji proverava dostupnost blokade, bez prelaska u stanje čekanja.

Primer korišćenja mutex-a u Swift:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Kritična sekcija
    lock.unlock()
}

Izbor tipa blokade zavisi od zadatka i zahteva za performansama i sigurnošću.