简介
skynet中提供了一个简单的计时器实现,可以设置一个超时时间,时间到达后给对应的服务发送消息,这篇文字主要是讲讲该计时器的实现。
skynet中没有使用signal信号的方式来实现计时器,而是程序自身进行计时并处理计时器事件。另外,skynet中将时间由近及远划分为五个level,在时间复杂度和空间复杂度上达到了平衡。
API
下面列举一下skynet_timer.h 中提供的public API:
void skynet_timer_init(void);
- 初始化计时器
int skynet_timeout(uint32_t handle, int time, int session);
- 设置超时时间及相应的回调消息
- 如果time<=0 , 立马派送消息
- 如果time>0, 将其加入计时器列表中,等时间到达后派发。
- time时间精度为百分之一秒
void skynet_updatetime(void);
- 程序更新时间并触发相应计时器事件
数据结构
struct timer_event {