如果有3个任务(T1,T2,t3),优先级为P1 P2 P3。
P1待命。
假设任务P2正在进行一些计算。在执行期间,它希望将CPU提供给系统中的其他任务。
TaskDelay(0)在这种情况下仍能正常工作吗?或者它只在所有任务具有相同优先级时才有效?
问候,Prabhu
答案 0 :(得分:5)
taskDelay(0)将不导致优先级较低的任务控制CPU。
只有当具有相同优先级的任务准备好执行时,taskDelay(0)才会导致上下文切换。
taskDelay(0)实质上导致优先级为x的任务被置于优先级x就绪队列的末尾。如果它是该优先级的唯一任务,它将保留CPU。