繁体   English   中英

std :: condition_variable :: wait_until对std :: this_thread :: sleep_for有什么好处吗?

[英]Does std::condition_variable::wait_until have any advantage against std::this_thread::sleep_for?

在等待时间的情况下:

我们的软件在后台运行,并且每隔20-30分钟与服务器同步数据。

我想用

std::this_thread::sleep_for

但我的上司强烈反对任何形式的睡眠功能。 他建议

std::condition_variable::wait_until(lock, timeout-time, pred)

我想知道在这种情况下sleep_for是否有任何不利之处?

正如评论中已经指出的那样,它仅取决于您的用例。 两者之间的主要区别在于,如果触发它, condition_variable 可以提前唤醒。 您还可以添加一个必须满足的谓词才能实际唤醒,但这只是一种生活品质的补充。 顺便说一下, sleep_for的等价物是wait_for而不是wait_until condition_variable也很适合在多个线程之间进行通信或同步。

鉴于你所说的一切,我会使用condition_variable ,原因如下:

  1. 让线程长时间休眠并不是一个好主意,因为您的应用程序可以随时退出(或者可以请求退出)。 在这种情况下,您可能希望您的线程正确退出,因此您必须能够随时将其唤醒。
  2. 您想要动态更改配置。 如果您的线程必须使用新参数重新启动,或者如果您需要该线程来实际加载配置文件,您也不希望等待下一个20分钟的intervall结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM