2008-11-29 255 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。