Algorithm 高效定时器算法

Algorithm 高效定时器算法,algorithm,timer,Algorithm,Timer,实现简单计时器库的最佳算法是什么。图书馆应允许以下内容: 要启动的计时器 要停止的计时器 要检查计时器是否仍在运行 计时器到期时,将调用回调函数 定时器模块将允许定时器的时间分辨率为Ns,并且应每Ns对模块进行一次触发,以提示模块检查过期的定时器 许多定时器可能同时处于活动状态 最佳算法需要满足以下目标 在处理计时器到期回调时,对启动/停止的计时器保持健壮 允许快速启动、停止和检查计时器 内存占用小 就POSIX ish系统而言,您可以使用函数系列“免费”提供大量此类功能。计时器通常最好在操作系

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

  • 要启动的计时器
  • 要停止的计时器
  • 要检查计时器是否仍在运行
  • 计时器到期时,将调用回调函数

    定时器模块将允许定时器的时间分辨率为Ns,并且应每Ns对模块进行一次触发,以提示模块检查过期的定时器

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

    最佳算法需要满足以下目标

  • 在处理计时器到期回调时,对启动/停止的计时器保持健壮
  • 允许快速启动、停止和检查计时器
  • 内存占用小

  • 就POSIX ish系统而言,您可以使用函数系列“免费”提供大量此类功能。

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


    您可能希望查看Linux实现的详细信息,并深入研究Linux源代码以查看有效的实现。

    我见过的计时器的最佳算法是研究论文中的计时器滚轮


    我知道在Java中有一个使用Netty、JBoss的实现,我相信如果您是用Java编写的,您也可以在其他地方使用它

    解决方案应该使用哪种语言?我对算法比对实现更感兴趣。如果它能帮助你知道我很可能会在C.RegardsHi Kristopher中实现它,我会看一看这些,但我对算法比对库更感兴趣。参考文献讨论了不同的计时器算法,以及在哪里可以适当地使用它们。如果链接将来失败,那么在阅读您的答案之前,了解标题“哈希和分层计时轮:高效实现计时器功能的数据结构”可能会有所帮助。我不知道NettyIO类,但实现似乎非常出色。没有双关语:不要重新发明轮子!这里还有一个C实现: