powerpc 011 簡單的任務排程的優化改進

2021-08-28 09:35:01 字數 611 閱讀 7180

下面是之前實現的乙個簡單的任務排程的相關**:

其實,簡單的排程倒是不會有什麼大的問題。不過,乙個很大的問題點是10ms、20ms、100ms在執行的時間點上會有重合。如果能夠做到更好的排程,應把它們拆開更加合理一點。這種拆分,依然使用10ms的時基進行拆分能夠有一點改進,但是更好的方式應該是把時基拆分的更小,而每個任務排程的時間上限應該也增加相應的限制。這樣,能夠實現乙個更加合理的死排程。

接下來,做個簡單的拆分:

這樣的改進其實很小,但是已經把20ms和100ms的排程重合點給打散了。如果要進一步優化,除了上面說的繼續減小時基之外,應該把類似20ms這樣的任務拆成更多個,例如上面的例子中可以把每個case都拆分成乙個20ms的task,而每個task都要增加相應的執行時間限制。這樣,整個任務呼叫散開之後,程式能夠充分利用每乙個中斷產生的時間片,增加cpu的利用率。

其實,說到了這裡,進一步的優化方案又可以初見端倪了。接下來可以嘗試進一步的修改改進。

Quartz任務排程的簡單應用

public class remindjob implements job override public void execute jobexecutioncontext arg0 throws jobexecutionexception crontrigger mycrontrigger b 0...

SpringBoot簡單的定時任務

1.在啟動類貼上 enablescheduling propertysource import class enablescheduling 定時標籤 public class 2.在需要定時的方法上貼上 scheduled cron 0 0 2 每天凌晨兩點執行 scheduled cron 0 ...

基於DAG簡單的任務排程

dag 是乙個無迴路的有向圖。乙個經典的應用是用於任務的排程,用來定義任務的依賴關係和流向,根據整個dag的定義,可以從中獲取哪個任務該先執行,哪個任務後執行。哪些步驟是可以並行執行的。這裡闡述乙個簡單的應用例子。推薦系統的通常需要進行多佇列召回,然後進行粗排 精排 混排。可以將這些操作抽象成不同型...