如何在C++; 我在C++中编写一个程序,在这里我需要调用每250 ms的函数。C语言中的函数非常简单,但是我不太清楚如何在C++中实现。

如何在C++; 我在C++中编写一个程序,在这里我需要调用每250 ms的函数。C语言中的函数非常简单,但是我不太清楚如何在C++中实现。,c++,timer,C++,Timer,如果有人能向我推荐解决方案,我将不胜感激 可等待计时器对象是一个同步对象,其状态设置为在指定的到期时间到达时发出信号。可以创建两种类型的可等待计时器:手动重置和同步。任一类型的计时器也可以是周期计时器 该函数用于创建Windows计时器。您可能需要研究一种称为增量计时的方法。这在游戏编程中用于防止帧速率失控。这是必要的,因为不同的机器运行不同的硬件,因此将以不同的速度运行。因此,您在一台机器上寻找的250ms可能是x个循环数,但当您转到另一台机器时,它可能是y个循环数。您只需要在繁忙的循环中等待

如果有人能向我推荐解决方案,我将不胜感激

可等待计时器对象是一个同步对象,其状态设置为在指定的到期时间到达时发出信号。可以创建两种类型的可等待计时器:手动重置和同步。任一类型的计时器也可以是周期计时器


该函数用于创建Windows计时器。

您可能需要研究一种称为增量计时的方法。这在游戏编程中用于防止帧速率失控。这是必要的,因为不同的机器运行不同的硬件,因此将以不同的速度运行。因此,您在一台机器上寻找的250ms可能是x个循环数,但当您转到另一台机器时,它可能是y个循环数。

您只需要在繁忙的循环中等待,还是需要同时完成其他工作?在后一种情况下,您可能需要一些多线程,或者您的主偶数循环只需要在每次间隔结束时检查。您是否有使用多线程实现该功能的链接?多线程没有万能的方法。Boost.ASIO有一个现成的计时器,您可以在单独的线程中运行ASIO服务,或者您可以使用
启动自己的睡眠功能。。。你必须找到一种短时间睡眠的方法,我认为这是平台依赖的(在Linux你有代码> USELUP )。这不是标准的C++。@亚历克斯不,不是,但是问题的背景使他们听起来像是在使用Windows。如果更新的C++增加了跨平台的标准方式,你可以自由地编写自己的答案。让我知道如果你这样做,我可以看看它。如果我想回答OP,我不会提供非标准的C++函数。我会花时间解释一种在标准C++中这样做的方法。时期严肃的程序员应该知道你的答案不是标准C++,因此我的评论。按照你的意愿,我并不在乎。“亚历克斯,我还不知道在标准C++中如何做这件事,所以我做了下一件最好的事。如果目标是解决眼前的问题,那么某件事是否是标准的一部分就没什么区别了。当我建议写你自己的答案时,我不是想贬低你,我是认真的。我所知道的关于C++11的大部分知识,以及后来我在StackOverflow上学到的知识,仍然存在差距。