Uváznutí obecně znamená, že dvě nebo více entit blokuje některé zdroje a žádná z nich nemůže skončit, protože blokují zdroje cyklickým způsobem.
Jeden příklad:Řekněme, že mám tabulku A a tabulku B, potřebuji provést nějakou aktualizaci v A a pak B a rozhodnu se obě zamknout v okamžiku použití (toto je opravdu hloupé chování, ale nyní to slouží svému účelu ). Ve stejnou chvíli někdo jiný udělá to samé v opačném pořadí – nejprve uzamkne B, potom A.
Chronologicky se to stane:
proc1:Zámek A
proc2:Zámek B
proc1:Lock B - začne čekat, dokud proc2 neuvolní B
proc2:Lock A - začne čekat, dokud proc1 neuvolní A
Ani jeden z nich nikdy neskončí. To je zablokování. V praxi to obvykle vede k chybám při vypršení časového limitu, protože není žádoucí, aby jakýkoli dotaz visel navždy, a základní systém (např. databáze) ukončí dotazy, které neskončí včas.
Jedním ze skutečných příkladů uváznutí je, když zamknete klíče od domu v autě a klíče od auta ve svém domě.