可移植库中的timer_create和TimerQueueTimer功能(如boost)

时间:2012-02-11 22:47:21

标签: c++ boost timer portability

我编写了一个在Linux上运行并使用sigevent和timer_create的程序,以便在指定频率上调用perdiodically回调函数。现在,我希望程序是可移植的(Windows和Linux),因此要做到这一点很长的方法是使用#ifdefs并使用Windows等效功能。

AFAIK,Windows上的等价物是TimerQueueTimer。

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

问题是:你知道Boost C ++库中是否有这样的东西,或者POCO或其他受人尊敬的库中是否有这样的东西?

如果它不存在,那么有什么东西可以阻止这种东西存在于便携式库中吗?

仅供参考,boost :: asio :: deadline_timer不是我要找的,它必须是一个定期调用回调函数的服务,其精度与timer_create和TimerQueueTimer相同。

2 个答案:

答案 0 :(得分:1)

POCO有一个运行TimerTask的多线程Timer类。基本上,您可以使用计时器到期时要执行的操作来覆盖TimerTask的run()方法。可以将多个任务添加到Timer对象,该对象生成一个线程以顺序运行所有挂起的任务。任务可以是一次性的或间隔可重复的。

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

答案 1 :(得分:0)

我强烈推荐ACE(自适应通信环境)。具体来看ACE_Reactor类和ACE_Reactor :: schedule_timer(...)方法。

Visit the Wiki page for more general information about ACE.

Or go directly to the official website.