It is possible for two or more programs to be hung up waiting for
each other. For example, two programs may each require two I/O devices to
perform some operation (e.g., disk to tape copy). One of the programs has
seized control of one of the devices and the other program has control of
the other device. Each is waiting for the other program to release the desired
resource. Such a deadlock may depend on the chance timing of resource
allocation and release.