睡觉和睡觉开始错了

时间:2014-09-19 11:16:38

标签: c++ sleep usleep

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

out();
usleep(4000000);

out只是在屏幕上打印一些内容。不幸的是,虽然out()函数调用在usleep命令之前,但打印仅在4秒后显示在屏幕上。我用覆盆子做覆盆子。怎么可能首先不是函数out();被调用,然后usleep开始,但反过来?

1 个答案:

答案 0 :(得分:3)

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

让我们以此代码为例:

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

如果&#34; a&#34;每次都会被写入屏幕,这需要很长时间。相反,整个缓冲区每n个字符写一次。

为了将非完整缓冲区写入屏幕,您有以下几种选择:

像这样使用std :: flush:

std::cout << std::flush;

Std :: endl也使用flush:

std::cout << std::endl;