2008-11-29 246 views
2

如果有3个任务(T1,T2,t3)具有优先级P1 P2 P3。将taskDelay(0)产生CPU到较低优先级的任务

P1已挂起。

假设任务P2正在做一些计算。在执行过程中,它希望将CPU分配给系统中的其他任务。

将TaskDelay(0)仍然在这种情况下工作?或者只有当所有任务具有相同的优先级时才起作用?

问候,帕布

回答

5

taskDelay(0)将原因的较低优先级任务采取CPU的控制。

只有当具有相同优先级的任务准备好执行时,taskDelay(0)才会导致上下文切换。

taskDelay(0)本质上会导致优先级x的任务放在优先级x就绪队列的末尾。如果它是唯一的优先级,它将保留CPU。