实现简单定时器库的最佳算法是什么?图书馆应允许:高效定时器算法
- 定时器启动
- 定时器被停止
- 定时器进行检查它们是否仍在运行
定时器到期的回调函数会调用。
定时器模块将允许定时器具有Ns的时间分辨率,并且应该给模块每N个踢一个脚,以提示模块检查过期的定时器。
许多定时器可能同时处于活动状态。
最好的算法需要实现以下目标
- 是稳健的,以正在启动定时器/停止,而处理计时器到期回调
- 允许定时器被启动,停止和快速检测
- 有小内存占用
问候
实现简单定时器库的最佳算法是什么?图书馆应允许:高效定时器算法
定时器到期的回调函数会调用。
定时器模块将允许定时器具有Ns的时间分辨率,并且应该给模块每N个踢一个脚,以提示模块检查过期的定时器。
许多定时器可能同时处于活动状态。
最好的算法需要实现以下目标
问候
我知道在Java中发现了一个计时器轮没有与Netty的,JBoss的实现,我相信其他地方也可以使用,如果你正在用Java编写。
引用的论文讨论了不同的计时器算法以及它们可以适当使用的地方。如果链接在将来失败,那么知道标题为“哈希和分层时序轮:有效实现定时器工具的数据结构”可能会有帮助 – 2014-10-15 09:49:12
在阅读您的答案之前,我并不知道NettyIO类[ HashedWheelTimer](http://netty.io/4.0/api/io/netty/util/HashedWheelTimer.html),但实现看起来非常出色。没有双关语意:不要重新发明轮子! – kevinarpe 2016-03-12 10:09:41
这里还有一个C实现:http://www.25thandclement.com/~william/projects/timeout.c.html – starseeker 2016-08-13 13:24:25
Ø在POSIX-ish系统中,您可以使用timer_create
/timer_settime
系列函数提供大量“免费”功能。
嗨Kristopher, 我会看看这些,但我更感兴趣的算法比采取股票库。问候 – 2009-05-15 09:25:43
定时器通常最好在操作系统内核中,在汇编/ C级别实现,尽可能使用APIC定时器等特定于平台的功能。
有关Linux实现的详细信息,请参阅http://lwn.net/Articles/167897/,并深入了解Linux源代码以查看工作实现。
解决方案应使用哪种语言? – 2009-05-15 08:53:44
我对算法比实现更感兴趣。如果它可以帮助你知道我最有可能实现它在C. 关心 – 2009-05-15 09:16:05