<parallel, programming> A situation where 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 waiting for output from a server while the server
is waiting for more input from the controlling program before outputting
anything. It is reported that this particular flavour 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 flavour is "constipation", in which each process is trying to
send stuff to the other but all buffers are full because nobody is reading
anything). See deadly embrace.
Another example, common in database programming, is two processes that are
sharing some resource (e.g. read access to a table) but then both decide to wait
for exclusive (e.g. write) access.
The term "deadly embrace" is mostly synonymous, though usually used only when
exactly two processes are involved. This is the more popular term in Europe,
while deadlock predominates in the United States.
Compare: livelock. See also safety property, liveness property.
dead « DEADBEEF « dead code « deadlock »
deadly embrace » dead tree » dead tree edition