在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