高效的定时器算法

时间:2009-05-15 08:47:37

标签: algorithm timer

实现简单计时器库的最佳算法是什么。该库应该允许以下内容:

  1. 计时器开始
  2. 要停止的计时器
  3. 要检查计时器是否仍在运行
  4. 在定时器到期时,将调用回调函数。

    定时器模块将允许定时器具有Ns的时间分辨率,并且模块应每Ns踢一次,以提示模块检查过期的定时器。

    许多计时器可能同时处于活动状态。

    最佳算法需要达到以下目标

    1. 在处理定时器到期回拨时启动/停止定时器是非常强大的
    2. 允许定时器快速启动,停止和检查
    3. 占用内存不足
    4. 此致

3 个答案:

答案 0 :(得分:11)

我在计时器上看到的最佳算法是研究论文Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility

中找到的计时器轮

我知道在Java中有一个Netty,JBoss的实现,如果你是用Java编写的话我也确定你可以使用它。

答案 1 :(得分:2)

定时器通常最好在操作系统内核中以汇编/ C级实现,尽可能利用APIC定时器等特定于平台的功能。

您可能希望查看http://lwn.net/Articles/167897/以获取有关Linux实现的详细信息,并深入了解Linux源代码以查看有效的实现。

答案 2 :(得分:1)

在POSIX-ish系统上,您可以使用timer_create/timer_settime系列函数免费提供大量此类功能。