在stackoverflow上,已经有很多关于高分辨率定时器的讨论。但显然,解决方案是一个不断变化的目标,最佳实践也在不断变化。
我需要创建一个高分辨率定时器,每10毫秒回调一次,以实现稳定的100Hz。目标平台是Windows 7及更高版本。
这个确切的问题在2009年被提出,但我相信事情可能已经发生了改变。
多媒体定时器似乎是一个很好的解决方案,但MSDN表示它们已经过时,被CreateTimerQueueTimer所取代。但stackoverflow上的其他答案表明,CreateTimerQueue timer并不像timeSetEvent那样精确。
所有答案都一致指出,需要使用timeBeginPeriod将Windows计时器分辨率设置为较低的值。
因此,针对上述目标,在C中采用什么方法是最好的呢?
我需要创建一个高分辨率定时器,每10毫秒回调一次,以实现稳定的100Hz。目标平台是Windows 7及更高版本。
这个确切的问题在2009年被提出,但我相信事情可能已经发生了改变。
多媒体定时器似乎是一个很好的解决方案,但MSDN表示它们已经过时,被CreateTimerQueueTimer所取代。但stackoverflow上的其他答案表明,CreateTimerQueue timer并不像timeSetEvent那样精确。
所有答案都一致指出,需要使用timeBeginPeriod将Windows计时器分辨率设置为较低的值。
因此,针对上述目标,在C中采用什么方法是最好的呢?
timeb.h
,它会给你一个包含毫秒的struct timeb
。 - ForceBru