随笔 - 733  文章 - 2  评论 - 12  阅读 - 92万

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);
  • 将工作项提交到工作队列:
  1. 带延迟提交:rt_err_t rt_work_submit(struct rt_work *work, rt_tick_t time);
  2. 无延迟递交:rt_err_t rt_workqueue_dowork(struct rt_workqueue *queue, struct rt_work *work);
  3. 紧急递交到队列头部:rt_err_t rt_workqueue_critical_work(struct rt_workqueue *queue, struct rt_work *work);

 

 

 

  • 取消递交:
  1. 等待执行完后取消rt_err_t rt_workqueue_cancel_work_sync(struct rt_workqueue *queue, struct rt_work *work);
  2. 直接取消递交工作项:rt_err_t rt_work_cancel(struct rt_work *work);
  • 工作完成不在使用时可以销毁:rt_err_t rt_workqueue_destroy(struct rt_workqueue *queue);
posted on   杰瑞鼠  阅读(229)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2018-08-12 硬件-防止浪涌:
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示