C ++中的精确计时器队列

时间:2011-11-25 23:21:13

标签: c++ timer cross-platform

我正在开发一个需要在特定时间发送消息的应用程序(这与多媒体有关,因此定时精度很重要),因此我需要一种机制来在指定的毫秒数内调用回调函数。

我需要同时支持Windows和Mac OS X.我已经研究过Windows上的计时器队列,它看起来像我需要的,但我读过时间精度对于基于多媒体的应用程序来说不够精确(我的应用程序)在特定时间感知MIDI消息到驱动程序)。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为在Windows上最好的选择是使用Multimedia Timers。在OS X上,最简单的函数是nanosleep,但是你可以使用kqueue。如果你说毫秒精度(毫秒是非常非常长的时间),我认为不会有任何问题。您可能需要做的唯一事情是确保操作系统以“实时”方式运行您的流程。

答案 1 :(得分:0)

对于我所知道的所有操作系统,任何 sleep 功能都是“至少”。

如果操作系统有很多任务,则需要由调度程序完成这些任务。

在太空中,他们专注于从队列中执行简单功能的硬件 - 这是您可以获得的最佳功能 - 并且它们不会被挤压