1、时间片调度算法issue解决办法
之前针对时间片调度算法,写过一篇文章关于时间片调度算法issue的分析与解决
最近又仔细研究发现考虑不全,依然存在bug, 现进行修复并针对性设计一下utest测试实例。
存在部分任务不调度的情况
后来有社区伙伴,使用该最新分支出现了不调度的情况。看了一下原因:
是YIELD 状态位的清除过早了,导致后面 rt_schedule_insert_thread的根据YIELD 状态位来判断时间片是否用完就存在问题了。
当时临时给出的方案如下,社区伙伴测试后,他们的问题不复现,解决了。
从本质上来看,这是修改不完整导致。是我的问题,当时认为方案二很简单,修改不多,大意了。但内心还是有疑问的,问什么我测试的时候没发现问题呢。加上当时内部小组讨论是重新理一下时间片的流程,看下还有什么漏洞,暂未提交该PR。最近搬完家,生活工作正常后,再次研究一下。
原作者:blta