用Erlang实现Time Wheel

用Erlang实现Time Wheel

大家好,又见面了,我是全栈君。

游戏开发总会要用到timer,离不开定时器的使用。像界面需要定时去绘制更新界面,后端也需要来定时执行逻辑,驱动事件。条条道路通罗马,就看你使用技巧好不好了。

一般服务器都是10ms一个tick,地图进程就在每个tick时执行逻辑处理,例如检查buff是否到期了,怪物是否该去攻击或走路了。以前的项目总是遍历整个列表,检查每个buff是否到期。可想而知,当列表长度大了,这里会耗费不少计算,而这些却是不必要的。当然优化方案也是有的,其中之一就是实用time wheel时间轮了。具体原理我就不啰嗦了,可以参考引用资料

原理还是很简单,采用多层时间轮会好点。当然具体问题还是具体分析,当需要大量定时器时,时间轮还是不错的。如果像玩家进程,只是少量需要的,可以使用更简单的方案。保存timer有序列表,每次添加,删除完定时器,都保证列表有序,然后只需从列表中取出第一项出来,加入到系统的定时器等待,超时了又再取下一个。这样就不需要定时tick去检查了,同时也不会占用多余的cpu,节省了资源,而且实现也是很简单的。像我在项目实施的,插入,删除的复杂度都在O(n),但实际上N是很小的,所以可以不需考虑性能问题。最后就是附上我基于skynet上的timer实现,用erlang实现的timewheel了^_^

erlang time wheel

转载于:https://my.oschina.net/rongtou/blog/813233

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108711.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • web navigator_前端如何传参数为一个对象

    web navigator_前端如何传参数为一个对象Navigator对象一、Navigator对象简介二、Navigator对象集合三、Navigator对象属性1.appCodeName、appName、appVersion(1)属性介绍(2)具体演示2.cookieEnabled、onLine(1)属性介绍(2)具体演示3.platform、userAgent(1)属性介绍(2)具体演示四、Navigator对象方法1.javaEnabled()五、Navigator对象描述一、Navigator对象简介Navigator对象包含有关浏览

    2022年9月3日
    3
  • Webstorm的一些常用快捷键

    Webstorm的一些常用快捷键下面是Webstorm的一些常用快捷键:1.ctrl+shift+n:打开工程中的文件,目的是打开当前工程下任意目录的文件。2.ctrl+j:输出模板3.ctrl+b:跳到变量申明处4.ctrl+alt+T:围绕包裹代码(包括zencoding的WrapwithAbbreviation)5.ctrl+[]:匹配{}[]6

    2022年6月12日
    25
  • RELU激活函数作用「建议收藏」

    RELU激活函数作用「建议收藏」梯度消失现象:在某些神经网络中,从后向前看,前面层梯度越来越小,后面的层比前面的层学习速率高。梯度消失原因:sigmoid函数导数图像导数最大为0.25<1权重初始值通常使用一个高斯分布所以|w|<1,所以wjσ′(zj)<0.25,根据链式法则计算梯度越来越小。由于层数的增加,多个项相乘,势必就会导致不稳定的情况。sigmoid激活函数的…

    2022年6月16日
    32
  • 30个优秀的网站导航菜单设计案例

    30个优秀的网站导航菜单设计案例导航是网站最重要的组成部分之一,一个有吸引力的导航能够引导用户浏览网站中的更多内容。导航的布局需要和网页内容完美的融合在一起,因此设计前需要设仔细分析网页结构。这篇文章收集了30个优秀的网站导航设计案

    2022年7月1日
    20
  • 2021年安全生产模拟考试(全国特种作业操作证电工作业-电力电缆模拟考试题库二)安考星

    2021年安全生产模拟考试(全国特种作业操作证电工作业-电力电缆模拟考试题库二)安考星电工作业–电力电缆该模拟题库适用于全国特种作业操作证电工作业–电力电缆模拟考试题通用部分,了解更多工种完整题库信息,百度搜索【安考星】或关注“安考星”微信公众号,支持电脑及手机多端同步练习。判断题181、测温光纤全线贯通,单点损耗小于0.02dB。()√182、冷缩式终端一般用于35kV及以下交联聚乙烯绝缘电缆。()×183、电缆绝缘层的利用系数是指绝缘层中最小电场强度与最大电场强度之比。()×184、电缆终端绝缘套管进行水冲洗时,要求冲洗用水的电阻不小于1500Ωm。()√

    2022年5月7日
    102
  • CSS 鼠标样式和手指样式整理

    CSS 鼠标样式和手指样式整理巧合要用到鼠标样式效果,就顺便整理了下十五种CSS鼠标样式,小例子供大家使用啊。CSS鼠标样式语法如下: 任意标签中插入style=”cursor:*” 例子:文本或其它页面元素文本或其它页面元素注意把*换成如下15个效果的一种: 下面是对这15种效果的解释。移动鼠标到解释上面,看看你的鼠标起了什么变化吧! hand是手型 例子:CSS鼠标手型效果CSS鼠标手

    2022年5月13日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号