睡眠和睡眠开始错误

sleep and usleep start wrong

本文关键字:错误 开始      更新时间:2023-10-16

在C++中,我在"主"路径中使用usleep,并在之前调用函数out

out();
usleep(4000000);

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

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

让我们以这个代码为例:

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

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

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

像这样使用std::flush:

std::cout << std::flush;

Std::endl也使用flush:

std::cout << std::endl;