Condition variables are used by threaded programs
to wait for events happening in other threads.
Note
Condition variables are only available on systems with thread
support. The Condition class is not simulated otherwise, since that
can't be done accurately without continuations.