線程調度策略SCHED_RR(輪轉法)和SCHED_FIFO(先進先出)之對照


我們在用pthread創建線程時,能夠指定調度策略policy——SCHED_OTHER(默認)、SCHED_RR和SCHED_FIFO。這里TALK一下兩個實時策略——SCHED_RR和SCHED_FIFO。

先看一下效果。我們創建了四個子線程,指定最高優先級(針對特定策略):

  • SCHED_RR


  • SCHED_FIFO


對同樣優先級的任務。SCHED_RR是分配給每一個任務一個特定的時間片,然后輪轉依次運行。而SCHED_FIFO則是讓一個任務運行完再調度下一個任務,而順序就是依照創建的先后。

SCHED_RR是依據時間片來調度線程的,當時間片用完時,無論這個線程優先級有多高,都不會在執行,而是進入就緒隊列,等待下一個時間片到來。只是圖1顯示,在thread5798時間片用完時,該線程緊接着進行了一次搶占preemption。又獲得了一個時間片。順便提一句時間片長度的定位是linux憑經驗來的。即選擇盡可能長、同一時候能保持良好對應時間的一個時間片。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM