TimerQueue定时器
在Reactor的基础之上,muduo又添加了定时器的功能。有了定时器,我们就可以将内部定时器事件或者编程者在程序中给定的一定时刻需要执行的任务,就是EVENTLOOP中的runAt run After runEvery等 与 外部的IO事件一起处理。
muduo的定时器功能主要由三个class实现:Timerid Timer TimerQueue,编程用户只能看见TimerId,其他两个类为内部实现。
在这个muduo中,所有的定时器事件都是共享同一个timerfd和同一个channel,有timerqueue统一管理,因此用timerID来标识不同的定时器,用timer记录每个定时器的固有属性的自己的特值。
TimerId
是一个标识符类,对用户可见,用户可以用它取消定时器
Timer
这个类定义了一些定时器的固有属性,包括定时器配套的回调函数,下一次的超时时刻,是否为重复定时器,若为重复定时器则每次超时的时间间隔是多少,已经当前定时器的序号,当前已经创建的定时器。
代码以及注释如下
const TimerCallback callback_;