我正在编写一个应用程序,将输入从一个设备转换为另一个设备 - 比如将一种头部跟踪格式转换为另一种设备,主要用于为游戏中的多种类型的头部跟踪提供支持。
大多数情况下,我的程序输入是通过轮询共享内存来提供的。但是,在紧密循环中这样做会不必要地消耗CPU核心。该应用程序必须不会降低游戏体验。
Windows上的默认计划时间似乎是60赫兹,因此睡眠非常多。我需要不到5毫秒,但偶尔的昙花一现。
我不会通过影响系统范围的计时器来影响系统配置。
我有什么选择可以防止使用核心,但仍然主要使用C或.net每隔1-5毫秒左右执行一次方法?
我正在寻找Windows 7的解决方案。
答案 0 :(得分:2)
看起来你只有两个选择:
TSC
或Performance Counter
,并在时机成功时执行需要执行的任何操作。答案 1 :(得分:-1)
如果进程间同步不可用,请尝试使用SetTimer
函数。它可以以毫秒间隔调用您的回调。
如果您想要毫秒级的睡眠,可以使用WaitForSingleObject
。只需给它一些永不改变自己状态的事件句柄。
然而,所有这些选项都非常不可靠,因为Windows不能保证计时,如果系统过载,结果将不是很好。