Muduo网络库源码分析(二) 定时器TimeQueue,Timer,TimerId
2017-06-20 19:40
309 查看
首先,我们先要明白为什么需要设计这样一个定时器类?
在开发Linux网络程序时,通常需要维护多个定时器,如维护客户端心跳时间、检查多个数据包的超时重传等。如果采用linux的SIGALARM信号实现,则会带来较大的系统开销,且不便于管理。
Muduo 的 TimerQueue 采用了最简单的实现(链表)来管理定时器,它的效率比不上常见的 binary heap 的做法,如果程序中大量(10 个以上)使用重复触发的定时器,或许值得考虑改用更高级的实现。由于目前还没有在一个程序里用过这么多定时器,暂时也不需要优化 TimerQueue。
(一)定时函数的选取
在开发Linux网络程序时,通常需要维护多个定时器,如维护客户端心跳时间、检查多个数据包的超时重传等。如果采用linux的SIGALARM信号实现,则会带来较大的系统开销,且不便于管理。
Muduo 的 TimerQueue 采用了最简单的实现(链表)来管理定时器,它的效率比不上常见的 binary heap 的做法,如果程序中大量(10 个以上)使用重复触发的定时器,或许值得考虑改用更高级的实现。由于目前还没有在一个程序里用过这么多定时器,暂时也不需要优化 TimerQueue。
(一)定时函数的选取
定时函数,用于让程序等待一段时间或安排计划任务: sleep alarm usleep nanosleep clock_nanosleep getitimer / setitimer timer_create / timer_settime / timer_gettime / timer_delete timerfd_create / timerfd_gettime / timerfd_settime
相关文章推荐
- Muduo网络库源码分析(二) 定时器TimeQueue,Timer,TimerId
- muduo源码分析之定时器TimerQueue的设计与实现
- muduo网络库源码分析-定时器
- muduo网络库学习(三)定时器TimerQueue的设计
- [置顶] Muduo网络库源码分析之定时器的实现
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- Nginx源码分析---队列结构ngx_queue_t
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java.util.Timer分析源码了解原理
- nginx源码分析—队列结构ngx_queue_t
- rt-thread的定时器管理源码分析
- 内核定时器 timer_list 分析
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- nginx源码分析—队列结构ngx_queue_t