timer wheel 笔记
使用场景一:有需要对空闲超过8秒的连接进行处理(关闭连接等)
A.构建8个链表list:L1, L2, L3, L4……L8
其中:
L1表示下一秒空闲达到8秒的连接;
L2表示下二秒空闲达到8秒的连接;
……
L8表示下八秒空闲达到8秒的连接,所有连接在加入管理时都会放在此链表中;
B.每隔1秒,处理L1中的所有链接,处理完成后,将L2变成L1,L3变成L2……L8变成L7,已经处理完成的L1变成L8;
C.每隔1秒钟,往复循环处理步骤B;
好处是:
1. 对于所有需要处理的超时时间,不需要遍历所有的链接;简单高效;
使用场景二:有需要处理的定时事件比较多,同时每个事件都需要重复触发
假设最小的定时间隔为ns
A. 构建N个或者更多的的容器,其中分别存放待处理定时事件,分别记为:C1,C2,C3……Cn;
其中:
C1:C1中存在多个(如10个)容器(列表),每个容器中存放待处理事件列表,如:
CL1,CL2,CL3……CL10;
CL1是每隔1个ns需要触发一次的事件的列表;
CL2是每隔2个ns需要触发一次的事件的列表;
……
CL10是每隔10个ns需要触发一次的事件的列表;
C2: