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

三个线程分别是 H线程、M线程、L线程  
1.三个线程的优先级顺序是:H线程 > M线程 > L线程;
2.正常运行的时候H线程可以打断M线程与L线程, M线程可以打断L线程;
3.假设系统有一个资源被保护了,此时该资源被L线程在使用,某一时刻H线程需要使用该资源,但L线程还未使用完,H线程申请不到而进入阻塞态,此时已出现优先级翻转现象;

没有优先级继承机制的时候:

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

有优先级继承机制的时候:
在H贤臣申请资源的时候由于申请不到资源进入阻塞态,系统会把当前使用资源的L线程的优先级临时提高到与H线程的优先级相同
此时M线程被唤醒也不会打断L线程;
L线程执行完毕,释放资源,H线程获取资源被继续执行,H线程等待的时间只是L线程的执行时间。

猜你喜欢

转载自blog.csdn.net/qq_27762895/article/details/83618810