Sobes.tech
Junior — Middle

Kun je uitleggen welke soorten blokkades er bestaan en hoe ze werken in multithreaded programmeren?

sobes.tech AI

Antwoord van AI

In multithread programming zijn er verschillende soorten blokkeringen die helpen bij het synchroniseren van toegang tot gedeelde bronnen:

  • Mutex (Mutual Exclusion) — zorgt voor exclusieve toegang tot een bron. Slechts één thread kan de mutex op dat moment verkrijgen.
  • Recursieve mutex — stelt dezelfde thread in staat om de lock meerdere keren te verkrijgen zonder zichzelf te blokkeren.
  • Lees-Schrijf Lock (Read-Write Lock) — stelt meerdere threads in staat om de bron gelijktijdig te lezen, maar schrijven is alleen mogelijk exclusief.
  • Semafor — beperkt het aantal threads dat gelijktijdig toegang kan krijgen tot de bron.
  • Spinlock (actief wachten) — de thread controleert in een lus of de lock beschikbaar is, zonder in een wachttoestand te gaan.

Voorbeeld van het gebruik van een mutex in Swift:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Kritische sectie
    lock.unlock()
}

De keuze van het type blokkering hangt af van de taak en de prestatie- en veiligheidsvereisten.