GTimer - 高性能时间轮定时器
基于多级时间轮算法的高精度定时器服务,专为GS语言游戏服务器设计
📋 目录
快速开始
安装
# 在package.json中添加依赖
"dependencies": {
"pkg.gtimer": "^1.0.0"
}
10秒上手示例
import pkg.gtimer;
import gs.util.time;
// 1. 初始化定时器服务(程序启动时执行一次)
gtimer.init_timer_service((: time.time_ms :));
// 2. 创建一次性定时器(1000ms后执行)
int timer_id = gtimer.create_timer(time.time_ms() + 1000, 1, 0, parallel () {
printf("定时器触发!\n");
});
// 3. 删除定时器(可选)
gtimer.delete_timer(timer_id);
// 4. 程序关闭时清理
gtimer.shutdown_timer_service();
🌱 入门级:基本概念
什么是GTimer?
GTimer是一个高性能定时器服务,用于在指定时间触发回调函数。它基于时间轮算法实现,能够:
- ✅ 精确到毫秒级的定时触发
- ✅ 支持一次性和循环定时器
- ✅ 支持动态间隔(固定值或函数计算)
- ✅ 支持最长约34.8年的定时范围
- ✅ 线程安全的并行调用
核心概念
1. 定时器ID
每个定时器都有唯一的ID,用于标识和管理:
int timer_id = gtimer.create_timer(...); // 返回定时器ID
gtimer.delete_timer(timer_id); // 通过ID删除定时器
2. 触发时间(dst_timeout_ms)
定时器的绝对触发时间(毫秒时间戳):
import gs.util.time;
// 1秒后触发
int trigger_time = time.time_ms() + 1000;
gtimer.create_timer(trigger_time, 1, 0, callback);
// 立即触发(传0)
gtimer.create_timer(0, 1, 0, callback);
3. 循环次数(loop_count)
控制定时器执行次数:
// 执行1次(一次性定时器)
gtimer.create_timer(time.time_ms() + 1000, 1, 0, callback);
// 执行5次
gtimer.create_timer(time.time_ms() + 1000, 5, 1000, callback);
// 无限循环(传-1)
gtimer.create_timer(time.time_ms() + 1000, -1, 1000, callback);