《实现较低的计时器粒度以重传TCP(RTO):时间轮算法如何减少开销》
《分级时间轮优化普通时间轮定时器》
Table of Contents
描述
新闻
用法
执照
资源
其他项目
描述
如George Varghese和Tony Lauck所著,ACM 089791-242-X / 87/0011/0025,第25-38页,实现了分层的计时轮,如“哈希和分层的计时轮:高效实现计时器工具的数据结构”中所述。 。对于所有操作,包括插入,删除和到期,此数据结构在O(1)最坏情况下实现计时器。
是tick子。传统的实现方式使用外部周期性计时器,该计时器以等于时钟粒度的间隔中断,以使计时轮前进一个刻度。 使用位图和位域操作来优化非周期性车轮进度,特别是在最坏的情况下,将下一个最小更新间隔的计算减少到较小的O(1)。这使得计时轮在纯软件中切实可行。
为什么选择正时轮时轮的关键特征是O(1)插入和删除。 络服务器软件中的超时很少过期;当发生其他预期事件失败时,它们会通过软件对冲。对于最简单的操作,通常会重复安装和取消超时。但是典型的超时实现使用红黑树或优先级队列,其中插入和删除是O(log N)操作。正时轮在算法上效率更高,而这种实现尤其尝试解决潜在的固定成本和延迟问题,尤其是对于人口稀少的轮而言。
新闻
2014-01-15
将项目页面重命名为timeout.c.html,将Git存储库重命名为timeout.git。
2014-01-10
通过添加先前已删除的位填充操作来修复错误。
无论是从算法上还是从绝对意义上来说,针对libevent基于二进制堆的计时器实现的初步基准测试都非常有前途。
2013-12-14
广泛的重构。重命名API以使用前缀timeouts_和timeout_,因为POSIX保护timer_。删除了一些未使用的代码,添加了一些注释(我忘记了过去几个月来大多数代码是如何工作的),并充实了API。
2013-05-28
公开发布。
用法
同步轮基本上是无量纲的。算法和实现本身都不必设想秒,毫秒,微秒等。使用一致的单位是应用程序的责任。无论单位如何,时钟源都应是单调的,尽管连续的时间戳不需要增加。
不透明的64位整数类型用于相对和绝对时间值,并且到期时间按位分段,并根据编译时参数WHEEL_NUM和WHEEL_BIT映射到wheel(有关更多详细信息,请参见参考资料)。
执照
版权所有(c)2013、2014 William Ahern
特此免费授予获得该软件和相关文档文件(“软件”)副本的任何人无限制使用软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,并允许具备软件的人员这样做,但须满足以下条件:
以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
资源
或从https://github.com/wahern/timeout的Github镜像浏览源代码。
其他项目
airctl | bsdauth | 片段| libmime | libarena | libevnet | 认证| streamlocal | libnostd | 分区| dns.c | proxy.c | llrb.h | lpegk | json.c | 排队| siphash.h | hexdump.c | timeout.c | luapath | luaossl | lunix | phf | 鲁鲁阿| 匿名
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!