A thread waiting on a condition variable (a) can
be explicitly notified and (b) may wake up before
the time has expired (spurious wakeups). If you
just want to sleep for a fixed amount of time, then
sleep_for is the right tool.
My understanding is that sleep_for can wait more than the time wanted, right? So basically a condition_variable can wait less, while sleep_for can wait a bit more?