我的类Timer
(使用std::chrono
)返回的值有一个奇怪的问题。
如果我保留std::cout
评论,我认为delta
返回timer.restart()
的价值非常低(达到 10需要3到4倍的时间) .F )。我尝试显示它,但正如我上面所述,取消注释std::cout
解决了问题。
我的计时器在应用程序的其他部分工作得很好,所以我认为问题不存在。
void Party::gameOver(float delta)
{
_delta += delta;
// std::cout << _delta << std::endl; // if I uncomment this the problem is solved
if (_delta > 10.0000f) {
// ...
_state = GameStatusType::Waiting;
_delta = 0;
}
}
此方法在此处调用:
void Party::loop(void)
{
Timer timer;
while (!isFinished())
{
float delta = timer.restart(); // return in second
switch (_state)
{
// ...
case GameStatusType::GameOver:
gameOver(delta);
break;
}
}
}
方法“loop”在如下的线程中调用:
void Party::run(void)
{
_party = std::thread(&Party::loop, shared_from_this());
}
我不知道这是否有帮助,但我在Windows 10上的Visual Studio 2015上执行此代码。如果您需要更多信息,请询问。
答案 0 :(得分:0)
一种可能性是Windows控制台真的很慢,有很多话题。您可以尝试使用重叠的io写入控制台,看看它是否有所改进。
答案 1 :(得分:0)
问题只是循环太快了。刚加了一个睡眠。