举个例子:
第一层时间轮格数是10,每格表示1ms。
第二层时间轮格数是20,每格表示上一层时间轮的总和:10*1ms=10ms
每个格子对应一个任务链表,这样插入只需常数时间
某一时刻第一层时间轮指针指向16,此时插入一个30ms后需要执行的任务,就把这个任务插入到16+30/10=19号时间轮格子。
某一时刻第一层时间轮指针指向2, 此时如果要插入一个52ms后需要执行的任务,可以把该任务插入第二层时间轮52/10+2=7号格子。当执行到7号格子时,发现还有2ms才能执行,就把这个任务放到第一层时间轮里。
网友评论