n. 1. [techspeak] A situation wherein two or more
processes are unable to proceed because each is waiting for one of
the others to do something. A common example is a program
communicating to a server, which may find itself waiting for output
from the server before sending anything more to it, while the
server is similarly waiting for more input from the controlling
program before outputting anything. (It is reported that this
particular flavor of deadlock is sometimes called a 'starvation
deadlock', though the term 'starvation' is more properly used for
situations where a program can never run simply because it never
gets high enough priority. Another common flavor is
'constipation', where each process is trying to send stuff to
the other but all buffers are full because nobody is reading
anything.)
See deadly embrace.
2. Also used of deadlock-like interactions between humans, as when two people meet
in a narrow corridor, and each tries to be polite by moving aside
to let the other pass, but they end up swaying from side to side
without making any progress because they always both move the same
way at the same time.