在C++中,我在我的“主”路径中使用了usleep
,之前调用了函数out
。睡眠和睡眠开始错误
out();
usleep(4000000);
out
只是在屏幕上打印一些东西。不幸的是打印出现在屏幕上只有4秒后,尽管out()
函数调用在usleep
命令之前。我和raspbian一起在树莓上工作。怎么可能不是第一个功能out()
;被称为,然后usleep
开始,但其他方式?
在C++中,我在我的“主”路径中使用了usleep
,之前调用了函数out
。睡眠和睡眠开始错误
out();
usleep(4000000);
out
只是在屏幕上打印一些东西。不幸的是打印出现在屏幕上只有4秒后,尽管out()
函数调用在usleep
命令之前。我和raspbian一起在树莓上工作。怎么可能不是第一个功能out()
;被称为,然后usleep
开始,但其他方式?
在C++中为了减少IO的时间我们有缓冲输出。这意味着,写入屏幕/磁盘的调用并不总是写入真实设备。
让我们举个例子的代码:
for (int x = 0; x < 10000; x++)
std::cout << "a";
如果“A”将每次写入到屏幕上,它需要很长的时间。相反,整个缓冲区每n个字符写入一次。
为了非全缓冲写入到屏幕上,你有几种选择:
使用std ::冲洗是这样的:
std::cout << std::flush;
的std :: ENDL也使用冲洗:
std::cout << std::endl;
太棒了,工作,非常感谢:-)我有与命令outfile.write(缓冲区,10)相同的问题;有没有像这样的冲洗呢? – 2014-09-19 14:34:42
'outfile.sync()' – 2014-09-19 14:38:12
发现它的工作方式与flush相同,非常感谢,我一个人试了几个小时...... :-)!这是它如何工作:而不是outfile.write(缓冲区,10)我使用:string buffer =“test”; outfile << buffer << flush; – 2014-09-19 14:42:29
这将有助于了解out()的作用。 – Galik 2014-09-19 11:19:49
你可能需要在'out()'中刷新你的输出缓冲区。 – 2014-09-19 11:20:34