class type condition = object .. end
method wait : mutex -> unit
In a multi-threaded program: Wait for the condition to be true
        and use the mutex to protect this situation.
        In a single-threaded program: this is a no-op.
method signal : unit -> unit
In a multi-threaded program: Signal one process that the condition
        holds.
        In a single-threaded program: this is a no-op.
method broadcast : unit -> unit
In a multi-threaded program: Signal all waiting processes that the
        condition holds.
        In a single-threaded program: this is a no-op.
method repr : exn
May be used internally be the implementation