Deadlocks
[ When two threads are blocking each other we have a
Deadlock. Such mutual blocking comes from bad initialization sequence or if not
all locks were matched by unlocks. Our design must specify the lock order. If a
timeout is used then the deadlock can be broken. A watchdog can help detect
deadlocked systems and threads in a pool. ]