消息队列可以看作为单链表
顺序表(结构数组)
队列先进先出
队列由内核层构建
消息队列的作用:任务间通信
任务间通信:有没有数据交换
有没有数据请求
消息队列传递时可能是多个数据或单个数据
二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一些细微的差别, 互斥信号量拥有优先级继承机制, 二值信号量没有优先级继承。 因此二值信号另更适合用于同步(任务与任务或任务与中断的同步)。二值信号量其实就是一个只有一个队列项的队列,这个特殊的队列要么是满的,要么是空的。
异步通信:未将信息同步传达接受中间存在时间间隔
信号量:(消息队列的一员)只有一人,不带数据Task1-传递>Task2
进行同步传递
二值信号量(1/0)任务间的同步,读为1
计数信号量多个任务间同步
互斥信号量:不会关闭中断Take->上锁(->阻塞)->buf->give开锁
互斥信号量可以可以降低优先级翻转带来的影响,但是互斥信号量不能用于中断服务函数:
1、互斥信号量有优先级继承的机制,所以只能用在任务中,不能用于中断服务函数。
2、中断服务函数中不能因为要等待互斥信号量而设置阻塞时间进入阻塞态。
二值信号量不具解决优先级翻转
软定时器:
1二值信号量:任务间的同步
2互斥信号量:资源保护
3软定时器:任务上对于时间的控制 任务方式(节拍) 循环进入阻塞方式
结束后会有因定时器产生的函数;用调度器切换;分为单次/循环两种模式;是么时候用是么时候开启
任务开启循环单次