Muduo网络库源码分析(二) 定时器TimeQueue,Timer,TimerId

来源:互联网 发布:廖雪峰python教程mobi 编辑:程序博客网 时间:2024/05/29 10:24

首先,我们先要明白为什么需要设计这样一个定时器类?

在开发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
原创粉丝点击