0/100
巴赫曼模块DIO216 现货一加
来自:厦门光沃自动化设备有限公司
面议
发布时间:2024-8-15
关注次数:52
产品参数
商品详情
DIO216时间轮可参考时钟进行理解,秒针(Seconds wheel)转一圈,则分针(Minutes wheel)走一格,分针(Minutes wheel)转一圈,则时针(Hours wheel)走一格。随着,时间的流逝,任务不断从上层流下下一层,最终到达秒针轮上,当秒针走到时执行。
如上所示,时间轮大小为8格,秒针1s转动一格,其每一格所指向的链表保存着待执行任务。比如,如果当前指针指向1,要添加一个3s后执行的任务,由于1+3=4,即在第4格的链表中添加一个任务节点即可。如果要添加一个10s后执行的任务,10+1=11,超过了秒针轮范围,因此需要对8取模11 % 8 = 3,即,会把这个任务放到分针轮上3对应的链表上,之后再从分针轮把任务丢到秒针轮上进行处理。也即,**秒针轮(Seconds wheel)**即保存着最近将要执行的任务,随着时间的流逝,任务会慢慢的从上层流到秒针轮中进行执行。
优点:加锁粒度较小,只需要加一个格子即可,一个格子对应一串链表;适合高并发场景
缺点:不好删除
如何解决时间轮定时任务删除?
- 通过引用计数来解决
- 交由业务层处理,将删除标记设为true , 在函数回调中根据这个标记判断是否需要处理
这里介绍两种定时器实现方案,一种是简单实现方案,另一种是skynet较为复杂的实现。
DIO216
DIO216
展开