Deadlock (situatie)

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een deadlock is een situatie waar een bepaalde actie is vastgelopen op wederzijdse uitsluiting.

Deadlocks komen vaak voor in een paradox zoals: "wat was er het eerst: de kip of het ei". Als men als antwoord "kip" geeft, dan is het tegenantwoord dat er eerst een ei moest zijn waar de kip uitkwam. Als het antwoord "ei" is, is het tegen-antwoord dat er eerst een kip moest zijn die het ei heeft gelegd.

In processen[bewerken]

Ook in een proces kan een deadlock ontstaan. Stel: twee personen moeten gelijktijdig een diagram maken. Er is slechts één potlood en één liniaal beschikbaar. Persoon A neemt het potlood, persoon B neemt de liniaal. Een deadlock ontstaat omdat persoon A de liniaal nodig heeft om de lijn recht te trekken, persoon B heeft het potlood nodig om de lijn te kunnen trekken. Dit probleem is op te lossen door ofwel een tweede potlood en tweede liniaal te voorzien ofwel door de opdracht aan te passen waardoor het diagram niet gelijktijdig gemaakt moet worden.

In database[bewerken]

Een deadlock kan ook ontstaan in een database. Gebruiker A wil een record 'a' aanpassen, maar heeft ook een ander gegeven 'b' nodig waar gebruiker B mee bezig is. In veel database-systemen komt er dan een lock op het record zodat anderen het niet kunnen lezen om aan te passen (bijvoorbeeld SQL: SELECT FOR UPDATE). Dus gegeven 'a' en 'b' worden gelockt. Het kan zo gemaakt zijn dat er hiervoor gewacht wordt. Dan zijn beide gebruikers aan het wachten en daar komt geen verandering in. Het is de taak van een databasemanagementsysteem dit op te lossen. Soms is er geen aandacht aangegeven zodat dit een potentieel gevaar voor storing wordt.

Zie ook[bewerken]

  • Filosofenprobleem (voorbeeld van de problematiek van synchronisatie)
  • Deadlock in het verkeer (kop van de file sluit aan bij de staart van de file)
  • Een Catch-22-situatie ontstaat als men zonder werkervaring geen baan kan krijgen, maar men zonder baan geen werkervaring kan opdoen.