void Wait(double Duration)
{
clock_t End;
End = clock() + (Duration*CLOCKS_PER_SEC);
while (clock() < End)
{
// This loop just stalls the program.
}
}
我的功能在一半时间内完美运行,但偶尔会在程序被调用之前停止运行。例如,请使用以下代码段:
cout << "This is\n";
Wait(2.5)
cout << "a test!";
你希望第一行立即显示,第二行在2.5秒后出现,但有时候所有在2.5秒后出现。这是什么交易?
答案 0 :(得分:4)
试
cout.flush();
在等待之前
答案 1 :(得分:4)
这可能是因为I / O缓冲。
您应该手动刷新输出缓冲区(尝试<< endl
而不是'\n'
或写cout.flush
)。
答案 2 :(得分:2)
尝试cout << "This is" << endl;
它看起来像一个缓冲,而不是时钟问题。
答案 3 :(得分:2)
已经提到了flush()/ std :: endl - 但你是否打算在等待的时候真正消耗100%的一个核心?这就是while()
循环正在做的事情!如果您想要更好的“等待”方法,请考虑以下其中一项:
等