高效定时器实现方案解析
1. 精细粒度定时器的重要性
在网络和实时应用中,精细粒度定时器发挥着关键作用。它不仅能加速错误恢复,还能让网络协议更精准地测量短时间间隔。例如,亚利桑那大学的 TCP Vegas 实现就比常用的 TCP Reno 性能更优,原因之一在于 TCP Reno 在丢包时因超时粒度粗糙而性能不佳。
此外,精确估计往返延迟对于 TCP 拥塞控制算法和 SRM 框架至关重要。同时,多媒体应用也大量使用定时器,如西门子的 CHANNELS 多媒体运行时系统,每个音频流使用粒度在 10 到 20 毫秒之间的定时器。对于多媒体和其他实时应用,启动和停止定时器的处理时间有最坏情况的边界是很重要的。不仅是网络应用,过程控制和其他实时应用也能从大量精细粒度定时器中受益。
2. 定时器模块的组成与性能指标
2.1 定时器模块的组件
一个定时器模块通常包含四个组件例程:
- StartTimer (Interval, RequestId, ExpiryAction) :客户端调用此例程启动一个定时器,该定时器将在“Interval”时间单位后到期。客户端需提供一个 RequestId 以区分不同的定时器,并可指定定时器到期时要执行的操作,如调用特定例程或设置事件标志。
- StopTimer (RequestId) :此例程根据客户端和 RequestId 定位并停止定时器。
- PerTickBookkeeping :定时器粒度为 T 单位,每 T 单位该例程检查是否有定时器到期,若有则调用