-2

在 C++ 中,我usleep在“主”路径中使用并在out之前调用该函数。

out();
usleep(4000000);

out只是在屏幕上打印一些东西。不幸的是,打印仅在 4 秒后出现在屏幕上,尽管out()函数调用在usleep命令之前。我用 raspbian 研究覆盆子。怎么可能不是先功能out();被调用然后usleep开始,但反过来呢?

4

1 回答 1

3

在 C++ 中,为了减少 IO 的时间,我们缓冲了输出。这意味着,写入屏幕/磁盘的调用并不总是写入真实设备。

让我们以这段代码为例:

for (int x = 0; x < 10000; x++)
    std::cout << "a";

如果每次都将“a”写入屏幕,则需要很长时间。相反,整个缓冲区每 n 个字符写入一次。

为了将非完整缓冲区写入屏幕,您有几个选项:

像这样使用 std::flush :

std::cout << std::flush;

Std::endl 也使用冲洗:

std::cout << std::endl;
于 2014-09-19T11:27:28.787 回答