rt-thread中的工作队列
消息队列大家都知道,工作队列是啥?
消息队列中的内容是一个个的消息内容指针,工作队列中的内容为一个一个待处理的函数(工作项)。rt-thread有系统的工作队列,用户也可以用类似的方法创建自己的工作队列:
- 创建自己的工作队列:struct rt_workqueue *rt_workqueue_create(const char *name, rt_uint16_t stack_size, rt_uint8_t priority);
- 先初始化自己的工作项(即待处理函数,入口参数,延迟时间):
rt_inline void rt_work_init(struct rt_work *work, void (*work_func)(struct rt_work *work, void *work_data), void *work_data);
- 将工作项提交到工作队列:
- 带延迟提交:rt_err_t rt_work_submit(struct rt_work *work, rt_tick_t time);
- 无延迟递交:
rt_err_t rt_workqueue_dowork(struct rt_workqueue *queue, struct rt_work *work);
- 紧急递交到队列头部:rt_err_t rt_workqueue_critical_work(struct rt_workqueue *queue, struct rt_work *work);
- 取消递交:
-
等待执行完后取消rt_err_t rt_workqueue_cancel_work_sync(struct rt_workqueue *queue, struct rt_work *work);
- 直接取消递交工作项:rt_err_t rt_work_cancel(struct rt_work *work);
- 工作完成不在使用时可以销毁:rt_err_t rt_workqueue_destroy(struct rt_workqueue *queue);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2018-08-12 硬件-防止浪涌: