网狐的定时器引擎架构理解
该定时器引擎基于线程驱动 时间片轮询 队列事件分发的核心思路实现整体架构分为定时器管理、定时线程驱动、事件分发三个核心模块以下是详细的实现流程和原理一、核心设计思路时间片轮询通过独立线程以固定时间间隔默认 25ms触发时间检查避免高频系统调用降低资源消耗定时器对象池维护 “空闲 / 活跃” 定时器链表复用定时器对象减少内存分配开销事件队列分发定时器到期后不直接执行逻辑而是将事件投递到队列服务由业务层异步处理解耦定时器核心与业务逻辑。二、核心组件与依赖组件作用CTimerThread定时器驱动线程以固定时间片睡眠后触发时间检查CTimerEngine定时器核心管理器负责定时器的增删、时间计算、到期事件投递CQueueServiceEvent事件投递器将到期的定时器事件投递到队列服务IQueueServiceCQueueService队列服务接收定时器事件并异步分发给业务层的回调接口三、完整实现流程1. 初始化阶段BeginService// TimerEngine.cpp - CTimerEngine::OnTimerThreadSink void CTimerEngine::OnTimerThreadSink() { CThreadLockHandle LockHandle(m_ThreadLock); // 1. 无活跃定时器则直接返回 if (m_dwTimeLeaveNO_TIME_LEFT) return; // 2. 累计已过时间更新剩余时间 m_dwTimeLeave - m_dwTimerSpace; m_dwTimePass m_dwTimerSpace; // 3. 检查是否有定时器到期m_dwTimeLeave0表示到检查点 if (m_dwTimeLeave0) { DWORD dwTimeLeaveNO_TIME_LEFT; for (INT_PTR i0;im_TimerItemActive.GetCount();) { tagTimerItem* pTimerItem m_TimerItemActive[i]; // 计算当前定时器剩余时间 pTimerItem-dwTimeLeave - m_dwTimePass; // 4. 定时器到期 if (pTimerItem-dwTimeLeave0L) { // 投递定时器事件到队列服务 m_AttemperEvent.PostTimerEvent(pTimerItem-wTimerID, pTimerItem-wBindParam); // 5. 处理重复次数 if (pTimerItem-dwRepeatTimes ! TIMER_REPEAT_TIMER) { if (pTimerItem-dwRepeatTimes1) { // 单次定时器移到空闲池 m_TimerItemActive.RemoveAt(i); m_TimerItemFree.Add(pTimerItem); bKillTimertrue; } else { // 多次定时器减少次数重置剩余时间 pTimerItem-dwRepeatTimes--; pTimerItem-dwTimeLeave pTimerItem-dwElapse; } } else { // 无限重复重置剩余时间 pTimerItem-dwTimeLeave pTimerItem-dwElapse; } } // 6. 更新全局最近到期时间 if (!bKillTimer) { i; dwTimeLeave__min(dwTimeLeave, pTimerItem-dwTimeLeave); } } // 7. 重置时间累计准备下一轮 m_dwTimePass0L; m_dwTimeLeavedwTimeLeave; } }CTimerEngine::SetTimer → 初始化定时器 → CTimerThread25ms轮询→ OnTimerThreadSink检查到期 → CQueueServiceEvent::PostTimerEvent → CQueueService::AddToQueue → 队列线程异步触发业务回调总结该定时器引擎是典型的 “时间片轮询 对象池 事件队列” 实现兼顾了性能、线程安全和业务解耦适合服务端高并发场景下的定时任务管理。

相关新闻

STC32G学习笔记-简单的USB-CDC虚拟串口通信

STC32G学习笔记-简单的USB-CDC虚拟串口通信

STC32G性能概述STC32G系列单片机,是32位8051单片机,在相同工作频率下,比传统的8051快70倍。不需要 外部晶振 和 外部复位 ,内置USB,不需要CH340(USB转串口芯片),就可以实现程序下载和…

2026/7/4 16:49:07 阅读更多 →
国密算法开发实践:从技术原理到工程落地的完整指南

国密算法开发实践:从技术原理到工程落地的完整指南

国密算法开发实践:从技术原理到工程落地的完整指南 【免费下载链接】GmSSL 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱 项目地址: https://gitcode.com/gh_mirrors/gm/GmSSL 核心价值:为什么GmSSL成为国密开发新标杆? 在密码技术自主可…

2026/5/17 11:03:55 阅读更多 →
ncmdump:破解NCM加密的开源工具,让音乐自由跨设备播放

ncmdump:破解NCM加密的开源工具,让音乐自由跨设备播放

ncmdump:破解NCM加密的开源工具,让音乐自由跨设备播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 问题场景:被加密音乐困住的三类用户困境 独立音乐人陈默的版权管理难题 案件现场&#xff…

2026/7/3 12:54:00 阅读更多 →

最新新闻

编程启蒙|Scratch 转 Python 系列第 3 天完整教程

编程启蒙|Scratch 转 Python 系列第 3 天完整教程

本篇是零基础 Python 自学系列 Scratch 转 Python 第 3 天笔记,适合纯小白入门,内容包含实操代码、详细讲解与配套练习题,全程 Scratch 积木代码 Python 双向对照教学。 一、昨日内容复盘(Scratch 转 Python Day2 for 循环与 ra…

2026/7/5 13:36:11 阅读更多 →
玄鹿电竞:用技术重构游戏服务体验,驱动专业护航

玄鹿电竞:用技术重构游戏服务体验,驱动专业护航

在《三角洲行动》的战场中,你是否曾因“老六蹲撤”“摸金翻车”“任务卡关”而遗憾?玄鹿电竞以技术为引擎,打造全链路专业护航平台,从下单、匹配、服务到售后,用数字化架构重构游戏服务体验,让“稳撤满载”…

2026/7/5 13:34:10 阅读更多 →
18、<简单>寻找距离2的幂最近的数字

18、<简单>寻找距离2的幂最近的数字

#include <iostream> using namespace std;int main() {int n;cout << "请输入整数n&#xff1a;";cin >> n;// 先找到小于等于n的最大2的幂 lowint low 1;while (low * 2 < n){low * 2;}int high low * 2; // 大于n的最小2的幂int dis_low …

2026/7/5 13:32:10 阅读更多 →
抖店违规检测工具使用步骤:上架前 3 类素材(主图 / 标题 / 详情)风险筛查指南

抖店违规检测工具使用步骤:上架前 3 类素材(主图 / 标题 / 详情)风险筛查指南

全网通用电商商品违规检测最全教程&#xff1a;新手小白零门槛避坑指南很多电商创业新手、副业小白做店铺运营时&#xff0c;最容易踩的坑就是商品违规。不管是做抖音、抖音小店、微信小店、微信小商城、视频号小店、拼多多、小红书、淘宝等全平台电商&#xff0c;绝大多数新手…

2026/7/5 13:30:10 阅读更多 →
3分钟免费激活Windows系统:KMS_VL_ALL_AIO智能激活工具完全指南

3分钟免费激活Windows系统:KMS_VL_ALL_AIO智能激活工具完全指南

3分钟免费激活Windows系统&#xff1a;KMS_VL_ALL_AIO智能激活工具完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活而烦恼吗&#xff1f;每次开机看到那个烦人的激…

2026/7/5 13:30:10 阅读更多 →
奇迹 MU 剑与翼手游官网下载:奇迹 MU 剑与翼最新官方下载渠道

奇迹 MU 剑与翼手游官网下载:奇迹 MU 剑与翼最新官方下载渠道

奇迹 MU 剑与翼手游官网下载&#xff1a;奇迹 MU 剑与翼最新官方下载渠道 《奇迹 MU 剑与翼》又名复古 1.03H 奇迹正版、卓越打金奇迹手游&#xff0c;由安徽游昕联合忆往游戏正版运维复刻的经典魔幻 MMORPG。游戏完整还原原版奇迹端游 1.03H 全部内容&#xff0c;勇者大陆、仙…

2026/7/5 13:28:09 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻