But nothing can prevent a monitor from erroneously forgetting to unblock a delayed process (by not calling continue) so the system can still effectively hang up through programming errors.
The single process queue variable gives a monitor complete control over medium-term scheduling, but the programmer is responsible for unblocking the correct process.