在时间等待场景中:
our software works in the background, and synchronizes data with the server in every 20 - 30 minutes.
我想用
std::this_thread::sleep_for
但我的上级强烈反对任何形式的 sleep 功能。他推荐
std::condition_variable::wait_until(lock, timeout-time, pred)
不知道在这种情况下sleep_for有什么缺点吗?
最佳答案
正如评论中已经指出的那样,这仅取决于您的用例。两者之间的主要区别在于,condition_variable
如果您触发它,可以更早醒来。您还可以添加一个必须满足才能真正醒来的谓词,但这只是生活质量的补充。顺便说一句,与 sleep_for
等效的是 wait_for
而不是 wait_until
。 condition_variable
也非常适合在多个线程之间进行通信或同步。
考虑到您所说的一切,我会使用 condition_variable
,原因如下:
- 让线程长时间休眠不是一个好主意,因为您的应用程序可以随时退出(或者更确切地说,可以被请求退出)。在那种情况下,您可能希望您的线程正常退出,因此您必须能够随时唤醒它。
- 您想即时更改配置。如果您的线程必须使用新参数重新启动,或者如果您需要该线程实际加载配置文件,您也不想等待下一个 20 分钟间隔结束。
关于c++ - std::condition_variable::wait_until 相对于 std::this_thread::sleep_for 有什么优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848887/