In a time waiting scenario:
our software works in the background, and synchronizes data with the server in every 20 - 30 minutes.
I wanted to use
std::this_thread::sleep_for
But my superior strongly against any form of sleep function. He recommends
std::condition_variable::wait_until(lock, timeout-time, pred)
I wonder if there are any disadvantage for sleep_for under such scenario?
std::condition_variable wait_until causes the current thread to block until the condition variable is notified, a specific time is reached, or a spurious wakeup occurs, optionally looping until some predicate is satisfied. 1) Atomically releases lock, blocks the current executing thread, and adds it to the list of threads waiting on *this.
When using a condition variable to wait for a condition, a thread performs the following sequence of steps: It determines that the condition is not currently true. It starts waiting for some other thread to make the condition true. This is the wait call.
std::condition_variable wait causes the current thread to block until the condition variable is notified or a spurious wakeup occurs, optionally looping until some predicate is satisfied. 1) Atomically unlocks lock, blocks the current executing thread, and adds it to the list of threads waiting on *this.
(2) (since C++11) wait causes the current thread to block until the condition variable is notified or a spurious wakeup occurs, optionally looping until some predicate is satisfied. 1) Atomically unlocks lock, blocks the current executing thread, and adds it to the list of threads waiting on *this.
As pointed out in the comments already, it depends only on your usecase. The main difference between the two is, that condition_variable
can wake up earlier if you trigger it. You also can add a predicate that must be satisfied in order to actually wake up, but that's only a quality of life addition. And btw, the equivalent to sleep_for
is wait_for
and not wait_until
. condition_variable
is also great to communicate or synchronize between multiple threads.
Given everything you said, I would use condition_variable
for the following reasons:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With