this_thread::sleep_for早点睡
this_thread::sleep_for sleeps early
我正在尝试做一件非常简单的事情(但花了几个小时没有结果):打印一行,睡一会儿,打印第二行。我希望下面的代码能够做到这一点,但是,它首先休眠然后同时打印两行!谁能看到我在这里遗漏了什么?
这是完整的代码:
#include<thread>
#include<chrono>
int main() {
printf("%s","Wait.\n");
std::this_thread::sleep_for(std::chrono::seconds(3));
printf("%s","Thank you for waiting.");
}
计算机信息:Mac 10.14.16,编辑:CLion
printf 不一定刷新缓冲区,这就是为什么在线程从睡眠中恢复之前看不到它的原因(它这样做是因为它注意到线程处于非活动状态)。要强制刷新,请在调用线程睡眠之前添加 fflush(stdout);
。
我正在尝试做一件非常简单的事情(但花了几个小时没有结果):打印一行,睡一会儿,打印第二行。我希望下面的代码能够做到这一点,但是,它首先休眠然后同时打印两行!谁能看到我在这里遗漏了什么?
这是完整的代码:
#include<thread>
#include<chrono>
int main() {
printf("%s","Wait.\n");
std::this_thread::sleep_for(std::chrono::seconds(3));
printf("%s","Thank you for waiting.");
}
计算机信息:Mac 10.14.16,编辑:CLion
printf 不一定刷新缓冲区,这就是为什么在线程从睡眠中恢复之前看不到它的原因(它这样做是因为它注意到线程处于非活动状态)。要强制刷新,请在调用线程睡眠之前添加 fflush(stdout);
。