目的
在项目开发过程中,我们常常需要定时的执行一些任务,通常的做法我们会创建一个线程,然后在线程里执行一个定时任务,如果有N个定时任务,则需要启动N个定时任务。这种做法有以下几个弊端。
1、频繁的创建线程可能会影响系统的整体运作性能。
2、每实现一个定时任务,则需要考虑任务的创建,销毁,任务的执行,而且大部分的内容是冗余的。
3、多任务之间的同步问题。
为了解决以上问题,我实现了一个多实例单线程多任务的定时器库。
实现方案
数据结构
typedef struct {
struct list_head head; // 链表头
mtimer_task_callback run; // 任务回调
unsigned int id; // 定时任务id
unsigned int last_tick; // 上一次执行的时间
unsigned int timeout; // 定时的超时时间,ms
mtimer_task_mode mode; // 定时任务的工作模式,两种工作模式。
void *user_data1; // 定时任务的上下文1
void *user_data2; // 定时任务的上下文2
unsigned int remove; // 定时任务是否标记删除
} mtimer_task; // 定时任务节点
typedef s

本文介绍了一种多实例单线程多任务的定时器库设计方案,该方案通过优化线程管理和任务调度,有效避免了频繁创建线程带来的性能损耗,并提供了简单易用的API接口。
最低0.47元/天 解锁文章
2295

被折叠的 条评论
为什么被折叠?



