RTOS(8)信号量和互斥量

1.信号量

信号量分为二值信号量和计数信号量

与队列相比:他不能传输数据,但同时他不需要传输数据,占用的空间也更小,运行更快;

在源码里面,信号量的代码其实用到了队列的代码,是特殊的队列;

队列头的结构体中的队列长度被复用为计数值;

操作Take和Give的时候跟队列一样要关中断,然后处理计数值,唤醒等操作,再开中断;

2.互斥量

与二值信号量类似,是特殊的信号量,本身是想实现谁上锁,谁解锁这个问题;

二级制信号量初始值是0,创建后需要Give一次;互斥量初始值是1,创建后不需要Give一次。

在代码中,也是特殊的队列;

优先级反转:

解决方法:优先级继承

高优先级任务获取互斥量失败之后,将优先级继承给低优先级的任务;


任务中有当前优先级和原始优先级两个变量,便于解除继承;

递归上锁

解决方法:可以使用递归锁;递归锁实现了:谁上锁就由谁解锁。成对出现;

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值