Wat is Deadlock?

Toestand waarin meerdere threads elk een resource vasthouden en wachten op resources van de andere threads, zodat niemand verder kan. Wordt voorkomen door een globale volgorde voor het nemen van locks af te spreken.

Japanse benaming: デッドロック

“Deadlock” komt voor in 3 oefenvragen uit 2 onderwerpen, bijv. Multicore en synchronisatie, Besturingssysteem en hardware.

Vakgebied: Multicore en synchronisatie

Nu oefenen: vragen over Deadlock

Welk voorbeeld van een deadlock is juist?

  1. AThread 1 houdt lock A vast en wacht op lock B, en thread 2 houdt lock B vast en wacht op lock A
  2. BTwee threads wijzigen dezelfde variabele zonder synchronisatie, waardoor de waarde wordt verstoord
  3. CEén thread neemt een lock en geeft die direct weer vrij
Antwoord en toelichting tonen

Antwoord: A. Thread 1 houdt lock A vast en wacht op lock B, en thread 2 houdt lock B vast en wacht op lock A

Een deadlock is een toestand waarin meerdere threads elk een resource vasthouden en op de resource van een andere thread wachten, zodat niemand verder kan. In het voorbeeld wacht thread 1 tot B vrij is en thread 2 tot A vrij is, maar beide geven hun eigen lock niet vrij, zodat ze voor altijd stilstaan. Omdat zonder CPU-gebruik wordt gestopt, lijkt de verwerking van buitenaf vastgelopen.

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.

“Deadlock” in de toelichting

Vragen met “Deadlock” (3)

  1. Welk voorbeeld van een deadlock is juist?
  2. Welke methode is de meest gangbare om deadlock te voorkomen in een programma met meerdere locks?
  3. Hoe heet de toestand waarin door te weinig fysiek geheugen alleen nog pagina's worden verdrongen en ingelezen en het werk nauwelijks vordert?

Vergelijkingen met deze term

Verwante termen

Thrashing ABA-probleem Acquire-release Atomaire instructie Barrièresynchronisatie Compare-and-swap Conditievariabele Data race Directorygebaseerde coherentie (directory-based) False sharing

Naar de woordenlijst