0

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

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

Windows 上的默认计划时间似乎是 60 赫兹,所以睡眠几乎没有了。我需要的时间少于 5 毫秒,但偶尔出现的问题是可以的。

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

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

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

4

2 回答 2

2

Looks like your only two options are:

  1. Using Multimedia Timers, but you seem to dislike the idea.
  2. Sprinkling a function call in all of your long loops, checking there the TSC or the Performance Counter and executing whatever needs to be executed if the time is right.
于 2013-04-15T10:00:10.690 回答
-1

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

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

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

于 2013-04-15T09:51:12.117 回答