gpt4 book ai didi

c++ - 为什么 std::this_thread::sleep_for() 在 MacOS 终端中不起作用?

转载 作者:搜寻专家 更新时间:2023-10-31 01:29:38 24 4
gpt4 key购买 nike

解释

以这段基本代码为例。

#include <iostream>
#include <thread>

int main(int argc, const char * argv[]) {
while(true){
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
std::cout << "loop";
}
}

当我在 XCode 中运行它时,它完全按照预期工作。每秒它打印出来,“循环”。但是,当我在终端中运行它时,什么也没有发生。代码似乎正在“运行”,但没有任何内容打印到屏幕上。

问题:

为什么 std::this_thread::sleep_for() 在 XCode 终端中工作,但在标准 MacOS 终端中不工作?

最佳答案

std::this_thread::sleep_for()在终端中也能正常工作,问题是 stdout在终端上缓冲。 stdout可以显式刷新,也可以在缓冲区太满或遇到类似换行符的情况下隐式刷新。

自己刷新标准输出或添加 std::endl最后隐含地执行它。

你也可以使用 std::cerr << "loop";因为错误流通常是无缓冲的(尽管 C++ 标准并不坚持这一点)。

关于c++ - 为什么 std::this_thread::sleep_for() 在 MacOS 终端中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49539962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com