【发布时间】:2019-07-02 09:02:02
【问题描述】:
在等待时间的场景中:
我们的软件在后台运行,并与 每 20 - 30 分钟服务器一次。
我想用
std::this_thread::sleep_for
但我的上级强烈反对任何形式的睡眠功能。他推荐
std::condition_variable::wait_until(lock, timeout-time, pred)
我想知道在这种情况下 sleep_for 是否有任何缺点?
【问题讨论】:
-
什么是“这样的场景”?两者通常用于完全不同的场景
-
condition_variable可以在超时之前唤醒。 -
如果你想无条件地睡觉,选择 1,如果你想等待一个条件并且限制为超时而不是使用 2。两者是完全不同的场景。 2 比 1 没有用,因为它“更好”。感觉就像“总是使用 for 循环语句,即使你只想要它的 if 子句。
-
例如,使用条件变量,您可以在从服务器接收数据时唤醒线程。此外,如果您连续睡眠 20 分钟,则在关闭应用程序时可能会出现问题(因为如果您使用
sleep_for,则无法唤醒线程以正确退出函数)。 -
这个错误陈述的问题,它类似于xy problem。
标签: c++ multithreading c++11