Windows毫秒时间 - 没有忙碌?

时间:2013-04-15 09:20:48

标签: .net c windows timing

我正在编写一个应用程序,将输入从一个设备转换为另一个设备 - 比如将一种头部跟踪格式转换为另一种设备,主要用于为游戏中的多种类型的头部跟踪提供支持。

大多数情况下,我的程序输入是通过轮询共享内存来提供的。但是,在紧密循环中这样做会不必要地消耗CPU核心。该应用程序必须不会降低游戏体验。

Windows上的默认计划时间似乎是60赫兹,因此睡眠非常多。我需要不到5毫秒,但偶尔的昙花一现。

我不会通过影响系统范围的计时器来影响系统配置。

我有什么选择可以防止使用核心,但仍然主要使用C或.net每隔1-5毫秒左右执行一次方法?

我正在寻找Windows 7的解决方案。

2 个答案:

答案 0 :(得分:2)

看起来你只有两个选择:

  1. 使用Multimedia Timers,但您似乎不喜欢这个想法。
  2. 在所有长循环中进行函数调用,检查TSCPerformance Counter,并在时机成功时执行需要执行的任何操作。

答案 1 :(得分:-1)

如果进程间同步不可用,请尝试使用SetTimer函数。它可以以毫秒间隔调用您的回调。

如果您想要毫秒级的睡眠,可以使用WaitForSingleObject。只需给它一些永不改变自己状态的事件句柄。

然而,所有这些选项都非常不可靠,因为Windows不能保证计时,如果系统过载,结果将不是很好。