定时器MMO中的作用不需要做过多的强调,对于大多数的游戏项目来说,都是按照linux内核定时器的原理自己实现的实时器队列,详细的技术描述可以见这里,已有高人将其翻译成了中文:http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=driver&Number=385224&page=0&view=collapsed&sb=5&o=all&vc=1
虽然原理并不复杂,并且有linux的内核代码可直接拿来做参考,但编码测试仍会费上一点时间,并且还会涉及到效率、稳定性、移植性等各方面的问题,而且当我们只是想在平时学习用的测试代码中用上点定时器时,这个实现的代价还是有点高了,所以,这里便有了个尝试,把ACE中提供的几个定时器队列拿出来,接口重新做下封装,以符合我们大多数人平时的使用习惯。这样一个定时器队列组件的实现不会太复杂,效率也不会太差,一点点封装代码所能引起的BUG机会也会少很多。
那就进入正题吧。
ACE将定时器队列分成了三大部件:分派器Dispatcher,驱动器Driver和节点容器TimerQueue。分派器用来登记和取消事件处理器,驱动器用来发出“超时事件指示”,而节点