Всеки участник в задънената улица притежава ресурс, от който другият се нуждае. Например, представете си две транзакции, T1 и T2. T1 е заключил ресурс A, а T2 е заключил ресурс B. T1 се нуждае от ресурс B, за да завърши, но не може да го получи, докато T2 не освободи заключването. По същия начин T2 се нуждае от ресурс A, за да завърши, но не може да го получи, докато T1 не освободи заключването. Това създава задънена улица.
Това, което прави фантомната безизходица различна от нормалната безизходица е, че участниците не са наясно един с друг. Те просто се опитват да вършат своите неща, но неволно се блокират.
Фантомните блокировки са трудни за откриване, защото не са причинени от нито една точка на повреда. Те са причинени от разпределения характер на самата система. В резултат на това те могат да бъдат много трудни за разрешаване.
Един от начините за разрешаване на фантомни блокирания е да се увеличи броят на заключванията в системата. Това намалява вероятността две транзакции да трябва да заключват едни и същи ресурси по едно и също време. Друг начин за разрешаване на фантомни блокирания е използването на изчаквания. Ако дадена транзакция не освободи заключване след определен период от време, тя се прекъсва и заключването се освобождава.
Фантомните блокирания са рядко явление, но могат да бъдат сериозен проблем, когато се появят. Като разберете какви са те и как да ги разрешите, можете да помогнете за безпроблемната работа на вашите разпределени системи.