读skynet_timer.c的问题

130 views
Skip to first unread message

易水寒

unread,
Feb 7, 2017, 6:39:05 AM2/7/17
to skynet-users
在每次shift的时候都会把当前刻度的链表move_list(到期的节点放入0级时间轮,其余节点所在槽不会变),链表长度最大可等于256*64∧n(n>0,为滴答当前所在的时间轮),如果系统跑了185分钟后,加入的节点就可能全在一个链表上,move_list就遍历很多次。

这种实现与最小堆,或者直接用512个槽散列有什么好处吗?

云风 Cloud Wu

unread,
Feb 7, 2017, 8:24:47 AM2/7/17
to skynet-users
这个实现简单,且能应对大部分常规状况。如果生产环境真的碰到问题再可以考虑去改进。

易水寒 <water...@gmail.com>于2017年2月7日周二 下午7:39写道:
在每次shift的时候都会把当前刻度的链表move_list(到期的节点放入0级时间轮,其余节点所在槽不会变),链表长度最大可等于256*64∧n(n>0,为滴答当前所在的时间轮),如果系统跑了185分钟后,加入的节点就可能全在一个链表上,move_list就遍历很多次。

这种实现与最小堆,或者直接用512个槽散列有什么好处吗?

--
您收到此邮件是因为您订阅了Google网上论坛上的“skynet-users”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到skynet-users...@googlegroups.com
要发帖到此群组,请发送电子邮件至skynet...@googlegroups.com
访问此群组:https://groups.google.com/group/skynet-users
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/skynet-users/C77FD739-0019-4CFA-A9DB-012DA7277061%40gmail.com
要查看更多选项,请访问https://groups.google.com/d/optout
Reply all
Reply to author
Forward
0 new messages