# ltimer **Repository Path**: yzfcer/ltimer ## Basic Information - **Project Name**: ltimer - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-03 - **Last Updated**: 2024-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ltimer: Linux下的高精度海量定时器实现 ## 特性介绍 1.利用epoll机制和timerfd特性实现的多重、多用定时器; 2.可实现海量定时任务,定时精度可达纳秒级别,同一时间点可添加不同的任务; ## 适用场景 海量连接超时处理,流表老化。 ## 设计思路 1.定时器桶采用预分配内存,创建时需要指定桶的容量. 2.定时器桶内的定时器用升序链表串起来,链表头部总是最近会超时的定时器. 3.每个定时器桶有一个工作线程,工作线程以固定频率触发,更新当前时间,并检查桶内是否有已超时的定时器,有则处理. 4.定时器桶的工作线程监听的pipe读端有定时器的增删改事件可读,读取出来并处理. 5.定时器超时,调用超时处理函数处理,完成后摘链,放到回收链表或者重新设置超时时间插入到活动链表合适位置. ## 使用方法 1.克隆代码,编译生成libltimer.so库文件; 2.拷贝头文件ltimer.h和库文件libltimer.so到项目中; 3.编码使用参考测试用例; ## 注意事项 1.定时器的超时任务要求效率高,否则会导致系统性能抖动; 2.定时器精度需要根据使用场景选择,过高的精度会导致CPU使用率高; ## TODO 1.完善错误提示码,方便定位问题; 2.添加测试用例; 3.目前使用链表管理定时器,后面根据需要改为时间轮.