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

         首先看例子关键代码:

168_优先级以及任务饿死

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

168_优先级以及任务饿死

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

168_优先级以及任务饿死

         应该是里面的这个延时导致的切换失败,合理的设计应该是调用OS提供的延时函数,相应函数的调用会触发任务调度,先从这个Task离开之后才会有一个成功的切换。而离开后的Task2应进入到一个等待的某种状态,这是我自己理解上的一个结论。

         因此,就目前的这部分代码,延时时间的长短不会让Task出现**的机会。

相关文章:

  • 2022-01-28
  • 2021-07-30
  • 2022-12-23
  • 2021-12-01
  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-12
  • 2021-07-20
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案