欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 時間片輪詢法中,如何處理同一時間不同任務 [打印本頁]

作者: cmx86081212    時間: 2019-4-5 19:01
標題: 時間片輪詢法中,如何處理同一時間不同任務
Task_Struct tasks[] =
{
   {0,200,200,task1},  //用各個任務的函數名初始化
   {0,60,60,task2},
   {0,100,100,task3},
   {0,10,10,task4}
};     
比如在此任務數組中有4個任務,但是每個任務的時間片是不同的。200ms/60ms/100ms/10ms
所以能在4個不同時間片執行相應的任務。
我的問題是在同一個時間片如何處理不同任務?
比如定時60秒的時間片,60秒到要處理顯示更新以及倒計時這兩個任務該如何解決?
(1)Task_Struct tasks[] =
{
     {0,60,60,task1},//任務一顯示更新
     {0,60,60,task2},//任務二倒計時
}
(2)Task_Struct tasks[] =
{
     {0,60,60,task1}
}

void task1()
{
      work1();//任務一顯示更新
      work2();//任務二倒計時
}
這兩種方法行不行的通?或者有沒更好的方法能夠解決?
注:關于時間片輪解釋如下

作者: cjp88811283    時間: 2020-12-26 13:52
需要注意的是,這種方法的前提是執行的 每個任務都是短小精悍的,要不然一個任務執行的時間過長,大于其它任務設置的時間片值,那其它任務就無法保證按它預設的時間片來執行。

尤其需要注意任務中延時的使用,可能會產生不可預料的結果。如果任務內部需要延時的時候,或者說單個任務過長,需要保存任務執行到一半的狀態,建議使用狀態機切割長任務。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1