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.