我们平常处理轮询任务的时候,会用时间片的方式来分割开,每个时间片处理某一个任务。
有时候有些任务并不需要有动作,本轮轮询到它,它不需要干活,于是这个时间片就浪费了。但如果其他时间片里面的任务又急着呢?资源利用就不到位了。所以就有了如下一种方案。
每个任务执行前先看看是否需要执行,如果不需要执行,就给到下一个时间片的任务来执行。为了避免死循环,最后一个任务不需要执行的时候,有两种处理办法:
1、回到判断任务1是否需要执行。这样操作需要所在线程全部任务都在时间片内,不然有可能一直在判断每个任务是否需要执行。
2、执行下一轮。这样会导致越靠前的任务被执行到的机会越多,就需要把更高优先级需要更频繁更重要的任务放在前面的时间片里面。