分级时间轮优化普通时间轮定时器(2):滴答式分层计时轮
《实现较低的计时器粒度以重传TCP(RTO):时间轮算法如何减少开销》
《分级时间轮优化普通时间轮定时器》
Table of Contents
描述
新闻
用法
执照
资源
其他项目
描述
timeout.c
如George Varghese和Tony Lauck所著,ACM 089791-242-X / 87/0011/0025,第25-38页,实现了分层的计时轮,如“哈希和分层的计时轮:高效实现计时器工具的数据结构”中所述。 。对于所有操作,包括插入,删除和到期,此数据结构在O(1)最坏情况下实现计时器。
timeout.c
是tick子。传统的实现方式使用外部周期性计时器,该计时器以等于时钟粒度的间隔中断,以使计时轮前进一个刻度。timeout.c
使用位图和位域操作来优化非周期性车轮进度,特别是在最坏的情况下,将下一个最小更新间隔的计算减少到较小的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
特此免费授予获得该软件和相关文档文件(“软件”)副本的任何人无限制使用软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,并允许具备软件的人员这样做,但须满足以下条件:
以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
该软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于对适销性,特定目的的适用性和非侵权性的担保。无论是由于软件,使用或其他方式产生的,与之有关或与之有关的合同,侵权或其他形式的任何索赔,损害或其他责任,作者或版权所有者概不负责。软件。
资源
git clone http://25thandClement.com/~william/projects/timeout.git
或从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 | 鲁鲁阿| 匿名网
分级时间轮优化普通时间轮定时器(2):滴答式分层计时轮相关推荐
- 分级时间轮优化普通时间轮定时器
<实现较低的计时器粒度以重传TCP(RTO):时间轮算法如何减少开销> Table of Contents Ratas-分级计时器轮 (分级)计时器轮 单文件实现,无依赖性 限制单个时间步 ...
- stm32滴答计时器_stm32中的系统滴答定时器使用
系统滴答定时器对于stm32的初学者来说还是非常重要的,因为随着你学习的深入编程过程中肯定会调用延时函数,比如我之前的一些gpio相关的实验中.那么延时函数的编写也是几种方法的,一般开始接触都是让系统 ...
- 8、TM4单片机的滴答定时器,及利用定时器精确延时
在我们日常使用单片机的时候,延时一般采用循环的方式,但是这样的方式只能用于粗略的延时,但我们需要精准的时间控制的时候,便需要利用定时器获得精确的延时. 本次采用TM4内的滴答定时器. 文章目录 1.滴 ...
- stm32滴答计时器_第三讲 STM32 SysTick---系统滴答定时器
一.Systick简介 Systick也叫系统滴答定时器,滴答定时器就是一个非常基本的倒计时定时器.它存在的意义是为系统提供一个时基,能够给操作系统提供一个硬件上的中断.使用Systick能够精准延时 ...
- NXP JN5169使用滴答定时器进行精准延时
NXP JN5169使用滴答定时器进行精准延时(us.ms) 一.滴答定时器介绍 二.滴答定时器系统图 1.系统图介绍 2.单次触发模式 3.可重启模式 4.连续运行模式 三.系统时钟 1.系统时钟域 ...
- [STM32F1]STM32F103滴答定时器定时不准?)
STM32F103滴答定时器定时不准? 前几天调了1块F103ZET6的开发板,用了个系统定时器,感觉不准,最终找到原因是因为选错了时钟源. 今天来分享一下也算是给大家以后出现问题做个参考 ...
- 小顶堆时间复杂度_时间轮算法以及时间轮在Netty和Kafka中的应用的
大家好,我是yes. 最近看 Kafka 看到了时间轮算法,记得以前看 Netty 也看到过这玩意,没太过关注.今天就来看看时间轮到底是什么东西. 为什么要用时间轮算法来实现延迟操作? 延时操作 Ja ...
- java 时间轮算法_时间轮算法(TimingWheel)是如何实现的?
前言 我在2. SOFAJRaft源码分析-JRaft的定时任务调度器是怎么做的?这篇文章里已经讲解过时间轮算法在JRaft中是怎么应用的,但是我感觉我并没有讲解清楚这个东西,导致看了这篇文章依然和没 ...
- STM32输出1-500KHz任意整数频率脉冲,代码时间空间优化实现误差最小频率输出。
提示:此文章只是分析了一种优化STM32发送脉冲减少误差的方法实现,由于本人水平有限,该方法并不是最优解,但确是一种比较容易理解的实现方法. STM32输出1-500KHz任意整数频率脉冲,代码时间空 ...
最新文章
- C 语言中” 与””的区别
- oracle可以面向对象吗,Jbdc助手-数据库操作面向对象的实现(oracle)
- sqlserver 新建只读权限用户
- 四阶龙格库塔法的基本思想_龙格库塔积分算法
- LINUX ulimit命令
- additive tree
- 何为优秀的机器学习特征 zz
- 手机html端悬浮球,手机移动端网站触屏可拖动悬浮球
- Confluence与Jira安装及后期迁移问题记录
- 2019年全网首发-vSphere 7之VCSA 7.0 RC部署指南(转载)
- angularjs 模块化
- MongoDB 概述、下载安装、配置 、启动与连接
- 不可见的unicode字符
- Bilinear Pairing双线性配对的解释
- Google Colab 挂载 Google Drive
- 智能厨房监控系统设计
- LA 7456 Least Crucial Node
- 【更新】京东、美团、饿了么获取cookies
- 网络连接处出现红叉的解决方法
- c语言上机题库程序设计,c语言上机程序设计题库及答案.pdf
热门文章
- oracle11g db files,oracle11g整个DB迁移
- Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务
- Vue.js 源码分析(九) 基础篇 生命周期详解
- 500 cannot be cast to javax.xml.registry.infomodel
- Asp.Net MVC 身份验证-Forms
- 关于IE8以上 不引人css 症状
- 官网下载旧版本的Xcode
- [转载]如何让自己变得有趣
- asp.net jquery.Ajax() 方法调用后台方法
- 常用的JavaScript验证正则表达式