Deadlock (situatie)

Een deadlock (impasse) 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.

Ook in een proces kan een deadlock ontstaan. Stel: twee personen krijgen gelijktijdig de opdracht om 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 de volgende manieren op te lossen:

  • door een tweede potlood of tweede liniaal te voorzien;
  • door de opdracht pas aan B te geven wanneer A klaar is;
  • door de hulpstukken in een vaste volgorde te pakken, bv. alfabetisch: eerst liniaal en dan potlood;
  • door de tekenopdrachten door te geven aan een derde partij die het potlood en de liniaal exclusief heeft (inkapseling).

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 daaraan geen aandacht gegeven zodat dit een potentieel gevaar voor storing wordt.

  • Filosofenprobleem (voorbeeld van de problematiek van synchronisatie)
  • Deadlock in het verkeer: kop van de file sluit aan bij de staart van de file, wordt in het Engels meestal gridlock genoemd, in Nederlands verkeersinfarct; gridlock wordt in het Engels ook in overdrachtelijke zin gebruikt
  • Een Catch-22-situatie ontstaat als men zonder werkervaring geen baan kan krijgen, maar men zonder baan geen werkervaring kan opdoen.