绝代码农 发表于 2021-7-8 15:26:49

168_优先级以及任务饿死

  分析学习一下官方例程中的任务优先级体验例子,同时简单猜想下为什么会出现任务饿死。
  首先看例子关键代码:

  里面任务优先级有两个,Task 2的优先级是高的。运行效果:

  从上面运行结果看,Task 1被饿死了。为什么饿死呢?这个可能与Task的代码实现有关了,Task的代码实现:

  应该是里面的这个延时导致的切换失败,合理的设计应该是调用OS提供的延时函数,相应函数的调用会触发任务调度,先从这个Task离开之后才会有一个成功的切换。而离开后的Task2应进入到一个等待的某种状态,这是我自己理解上的一个结论。
  因此,就目前的这部分代码,延时时间的长短不会让Task出现激活的机会。

  
文档来源:51CTO技术博客https://blog.51cto.com/greyzhang/3014736
页: [1]
查看完整版本: 168_优先级以及任务饿死