muduo 定时器的新理解

吐槽部分

你以为你以为的就是你以为的么…
今天重新看了一下 muduo 的定时器实现的源码部分, 才发之前的理解是错, 之前只是停留在 muduo 的定时器是 timerfd 是实现的, 没有再去往下看, 今天重新捡起来看了一下源码, 才发现以前的理解错了

muduo 定时器

muduo 定时器封装了 Timer.h 里面保存的是超时时间和回调函数, TimerQueue.h 使用set容器保存多个定时器, 然后在TimerQueue中使用timerfd_create创建一个timerfd句柄, 插入定时器A后先比较A的触发时间和TimerQueue的触发时间, 如果A的触发时间比其小就使用timerfd_settime重置TimerQueuetimerfd的触发时间, TimerQueue中的timerfd的触发时间永远与保存的定时器中触发时间最小的那个相同, 然后timerfd触发可读后, 遍历保存的多个定时器, 看看有没有同时到期的, 有执行回调函数

你可能感兴趣的:(muduo,源码学习)