如何设计数据结构使定时器处理更高效
程序运行时将会产生大量的定时器(可能几十万个),如何设计数据结构来使定时器相关处理(启动/删除/超时判断)更高效,定时器精度并不要求太高,所以请各位大虾考虑一下如何组织结构即可。
例如:将定时器列表按照剩余时间从小到大排队(剩余时间相同的再排成一个小链表)。这样,启动的时候可以按照类似二分法的方法插入队列。判断是否超时的话,只需要顺序判断即可,若当前节点不超时,后面的肯定也不超时,就不用再判断了。
[解决办法]
每添加一个timer都二分插入没必要吧。
根据你的timer长短,设计N个池,比如10个池
第一个池是即将到期的,比如50ms内的,这个池内的timer是排序好的,添加到这个池的timer需要二分插入。后面N-1个池是不需要排序的,当时间到了第二个池时,再对这个池的timer做一次排序,同时处理最后一个池的timer,把时间长的timer移动到第一个池(此时第一个池已经空了)。
[解决办法]
http://www.cnblogs.com/owenliang/archive/2011/12/06/2277793.html