当前位置:首页 > 学习资源 > 讲师博文 > FreeRTOS 任务通知(Task Notification)与其他通信方式对比

FreeRTOS 任务通知(Task Notification)与其他通信方式对比 时间:2026-08-26      来源:华清远见

概述

操作系统提供的“多任务调度”能力可以说是最吸引程序员的一点,不管是单片机用的RTOS还是高级MCP用的完整操作系统无一列外都支持。借助多任务并发能力程序员可以将复杂的业务进行解耦,实现软件的模块化设计,提高软件的稳定性和可维护性。尤其是像linux、windows等,甚至提供进程内存虚拟化技术,更是将进程安全性做到极致。但任何事情都有两面性,分离成多个任务后必然涉及到沟通不便,而为了沟通,操作系统不得不提供解决方案。下边是FreeRTOS提供的经典方案:

队列(Queue)

如图所示,队列是一个完全独立于任务的一个外部对象, 任务间通信不管是一堆多还是多对一。基本流程是建立一个队列后,发送方向队列推送信息,接收方从中出队信息。优势:

1.可传递多个数据;

2.数据类型任意;

3.可双向传输;

4.支持多个任务读取;

5.可缓存数据;

信号量(Semaphore)

如图所示,信号量也是一个完全独立于任务的一个外部对象,像一个变量一样同步各个任务的运作,当然他支持阻塞的功能。优势:

1.资源不够可阻塞任务;

2.只是一个变量操作效率高;

事件组(Event Group)

如图所示,事件组依然是一个完全独立于任务的一个外部对象,由内核维护,同故宫多个bit控制任务的运作,当然它不支持缓存和多值。优势:

1.可协调多个任务;

2.Bit位内存占用少;

任务通知(Task Notification)

如图所示任务通知比其他通信都更加轻量化,直接在进程控制块PCB中存在, 不用内核专门维护数据。但的确也有些劣势,比如无法缓存,不能多任务共享等。

总结

如果你需要“多对多”广播,或者需要缓存多个数据,只能选队列/事件组。

如果你只是“甲通知乙” 做同步,或者传递一个简单的状态值,坚决用任务通知,它会让你省下大量RAM并显著提升响应速度。

上一篇:深度学习中的损失函数与优化算法基础知识

下一篇:图像预处理技术综述:为什么算法训练前必须处理图像

戳我查看嵌入式每月就业风云榜

点我了解华清远见高校学霸学习秘籍

猜你关心企业是如何评价华清学员的

干货分享
相关新闻
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2026 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号-5,京公海网安备11010802025203号

回到顶部