zhngs

zhngs

muduo源码分析(3)——定时器

一.简介
二.Timer
三.TimerQueue

一.简介

muduo的EventLoop提供了定时器功能,可以在事件循环中设置定时事件,主要由muduo/net/Timermuduo/net/TimerQueue提供

  • muduo/net/Timer封装了单个定时器所需的各种数据,如过期时间,重复时间,回调函数等
  • muduo/net/TimerQueue内部有一个Channel,可以向EventLoop注册事件,也存储了一个Timer set,用来对所有定时器按照过期时间排序

二.Timer

Timer的主要目的是为了将一个定时器所需的参数封装起来

Timer是对象语义,不可拷贝

三.TimerQueue

TimerQueue的主要目的

  • 内部有一个timerfd和Channel,向EventLoop注册定时器时间

  • 提供一个addTimer接口,供EventLoop使用,EventLoop使用addTimer封装了更好用的定时函数runAtrunAfterrunEvery

  • 内部有一个Timer set,负责管理所有注册到TimerQueue的Timer