2012-02-11 42 views
1

我已经编写了一个程序,运行在Linux上,并使用sigevent和timer_create为了在指定的频率下调用perdiodically回调函数。现在,我希望程序是可移植的(Windows和Linux),因此要做到这一点的长途是使用#ifdefs并使用Windows等效功能。在便携库中的timer_create和TimerQueueTimer功能(像升压)

AFAIK,Windows上的等价物将是TimerQueueTimer。

我知道这是一个OS服务,但是就像线程一样,它可以通过像Boost C++这样的库进行移植。

问题是:你知道在Boost C++库中,或者在POCO或其他可敬的库中是否存在这样的事情吗?

如果它不存在,那么在便携式库中是否有任何东西阻止了这种事情的发生?我想要的是boost :: asio :: deadline_timer,它必须是一个定期调用与timer_create和TimerQueueTimer相同精度的回调函数的服务。

+1

起初我以为libev可能会解决你的问题,但后来我意识到,我从来没有听说过它在Windows上运行的,所以后一胎的研究,我发现这一点:HTTP:// DOC .dvgu.ru/devel/ev.html#win32_platform_limitations_and_workarounds 那么,根据他们,Windows事件系统是太不同于POSIX兼容... – lvella 2012-02-11 22:59:17

+0

您需要使用便携式库。再看看'boost :: asio',它当然可以做你需要的。 – 2012-02-12 09:49:15

回答

1

POCO有一个运行TimerTask的多线程Timer类。基本上你可以用计时器到期时想要做的事情覆盖TimerTask的run()方法。可以将多个任务添加到Timer对象,该对象产生一个线程来顺序运行所有未完成的任务。任务可以是一次性或间隔可重复的。

不知道它是否满足您的所有需求,但值得一看。