打印
[应用相关]

RT-thread 互斥量中优先级继承机制

[复制链接]
374|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32jy|  楼主 | 2019-1-28 21:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
三个线程分别是 H线程、M线程、L线程  
1.三个线程的优先级顺序是:H线程 > M线程 > L线程;
2.正常运行的时候H线程可以打断M线程与L线程, M线程可以打断L线程;
3.假设系统有一个资源被保护了,此时该资源被L线程在使用,某一时刻H线程需要使用该资源,但L线程还未使用完,H线程申请不到而进入阻塞态,此时已出现优先级翻转现象;


沙发
stm32jy|  楼主 | 2019-1-28 21:08 | 只看该作者
没有优先级继承机制的时候:

如果L线程执行的时候,M线程刚好被唤醒了,由于M线程的优先级比较高,会打断L线程,抢占CPU使用权,直到M线程执行完成;
M线程将CPU的使用权给L线程,L线程继续执行,L执行完后释放该资源;
H线程得到该资源,从阻塞态解除;
这个过程,高优先级的H等待了M线程+L线程的时间,如果有更多线程的时候,那系统就崩溃了,等不起的!

使用特权

评论回复
板凳
stm32jy|  楼主 | 2019-1-28 21:08 | 只看该作者
有优先级继承机制的时候:
在H贤臣申请资源的时候由于申请不到资源进入阻塞态,系统会把当前使用资源的L线程的优先级临时提高到与H线程的优先级相同;
此时M线程被唤醒也不会打断L线程;
L线程执行完毕,释放资源,H线程获取资源被继续执行,H线程等待的时间只是L线程的执行时间。

使用特权

评论回复
地板
yediezeus| | 2019-1-29 13:38 | 只看该作者
是不是用信号量控制一下

使用特权

评论回复
5
stm32jy|  楼主 | 2019-1-29 20:17 | 只看该作者
yediezeus 发表于 2019-1-29 13:38
是不是用信号量控制一下

是的,这个需要自己理解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

1118

帖子

3

粉丝