实现简单计时器库的最佳算法是什么。该库应该允许以下内容:
在定时器到期时,将调用回调函数。
定时器模块将允许定时器具有Ns的时间分辨率,并且模块应每Ns踢一次,以提示模块检查过期的定时器。
许多计时器可能同时处于活动状态。
最佳算法需要达到以下目标
此致
答案 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
系列函数免费提供大量此类功能。