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

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

在开发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)