Condition variables provide synchronization primitives used to block a thread until
notified by some other thread that some condition is met or until a system time is
provides a condition variable that can only
wait on an object of type unique_lock<mutex>
, allowing the implementation
to be more efficient.
provides a general
condition variable that can wait on objects of user-supplied lock types.