Hver deltaker i vranglåsen har en ressurs som den andre trenger. Tenk deg for eksempel to transaksjoner, T1 og T2. T1 har låst ressurs A, og T2 har låst ressurs B. T1 trenger ressurs B for å fullføre, men den kan ikke få den før T2 slipper låsen. På samme måte trenger T2 ressurs A for å fullføre, men den kan ikke få den før T1 slipper låsen. Dette skaper en vranglås.
Det som skiller en fantom-deadlock fra en normal deadlock er at deltakerne ikke er klar over hverandre. De prøver bare å gjøre sine egne ting, men de blokkerer hverandre utilsiktet.
Fantomlåser er vanskelige å oppdage fordi de ikke er forårsaket av et enkelt feilpunkt. De er forårsaket av den distribuerte naturen til selve systemet. Som et resultat kan de være svært vanskelige å løse.
En måte å løse phantom-deadlocks på er å øke antallet låser i systemet. Dette gjør det mindre sannsynlig at to transaksjoner trenger å låse de samme ressursene samtidig. En annen måte å løse deadlocks på er å bruke tidsavbrudd. Hvis en transaksjon ikke frigjør en lås etter en viss tid, avbrytes den og låsen frigjøres.
Fantomlåser er en sjelden forekomst, men de kan være et alvorlig problem når de oppstår. Ved å forstå hva de er og hvordan du kan løse dem, kan du bidra til å holde de distribuerte systemene i gang jevnt.