168_优先级以及任务饿死
分析学习一下官方例程中的任务优先级体验例子,同时简单猜想下为什么会出现任务饿死。首先看例子关键代码:
里面任务优先级有两个,Task 2的优先级是高的。运行效果:
从上面运行结果看,Task 1被饿死了。为什么饿死呢?这个可能与Task的代码实现有关了,Task的代码实现:
应该是里面的这个延时导致的切换失败,合理的设计应该是调用OS提供的延时函数,相应函数的调用会触发任务调度,先从这个Task离开之后才会有一个成功的切换。而离开后的Task2应进入到一个等待的某种状态,这是我自己理解上的一个结论。
因此,就目前的这部分代码,延时时间的长短不会让Task出现激活的机会。
文档来源:51CTO技术博客https://blog.51cto.com/greyzhang/3014736
页:
[1]