【发布时间】:2020-10-19 12:06:41
【问题描述】:
所以我让主线程与其他线程通信,并且在某些时候我希望子线程一次休眠一个,但是当我使用sleep_for 方法并放入 2 秒时,它永远不会停止休眠,但是使用 valgrind 它确实会停止睡眠,没有它就不起作用。
这是我的代码:
int cookTime = (int)_currPizza->getCookTime() * this->_multiplier;
printf("cook time %d\n", cookTime);
// cookTime is 2;
printf("start cooking\n");
std::this_thread::sleep_for(std::chrono::seconds(cookTime));
printf("end cooking\n");
【问题讨论】:
-
请提供minimal reproducible example,并请说明您是如何知道它无限休眠的
-
它不打印“结束烹饪\n”这就是我所知道的
-
尝试在“结束烹饪”printf 之后刷新缓冲的 IO。您可以使用
fflush(stdout)执行此操作。如果您发布一个简化的完整示例(即我们可以运行的东西,我们不能按原样运行),那么人们可能能够提供更多帮助。
标签: c++ multithreading sleep