在C ++中,我在“main”路径中使用usleep
并在之前调用函数out
。
out();
usleep(4000000);
out
只是在屏幕上打印一些内容。不幸的是,虽然out()
函数调用在usleep
命令之前,但打印仅在4秒后显示在屏幕上。我用覆盆子做覆盆子。怎么可能首先不是函数out()
;被调用,然后usleep
开始,但反过来?
答案 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;