Multicore en synchronisatie

Welke methode is de meest gangbare om deadlock te voorkomen in een programma met meerdere locks?

  1. AAlle threads nemen de locks in dezelfde, voor het hele programma vastgelegde volgorde
  2. BEen lock die is genomen nooit meer vrijgeven
  3. CHet aantal threads beperken tot twee of minder
Antwoord en toelichting tonen

Antwoord: A. Alle threads nemen de locks in dezelfde, voor het hele programma vastgelegde volgorde

Een deadlock ontstaat als een 'cirkel' van threads ontstaat die elk op de lock van de ander wachten. Als iedereen zich bijvoorbeeld houdt aan 'altijd eerst A en dan B nemen', ontstaat er geen thread die B vasthoudt en op A wacht, en dus geen cirkel. Andere methoden zijn alle benodigde locks tegelijk nemen, of bij mislukken de gehouden locks loslaten en opnieuw beginnen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Wat legt een geheugenconsistentiemodel vast?
  2. Welke uitleg over sequentiële consistentie (sequential consistency) is juist?
  3. De bovenstaande twee threads worden tegelijk op verschillende cores uitgevoerd (er is geen herordening door de compiler). Welke uitkomst treedt niet op bij sequentiële consistentie, maar kan wel optreden bij echte CPU's zoals x86?
  4. Welke eigenschap van het geheugenconsistentiemodel van x86 (TSO, Total Store Order) is juist?
  5. Wat is juist over zwakke geheugenconsistentiemodellen zoals die van ARM en RISC-V (RVWMO)?

Vergelijkingen bij dit onderwerp