new(lock, other_cond, preferred_thread)
public

semantics of condition variables guarantee that broadcast, broadcast_on_biased, signal and wait methods are only called while holding a lock