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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3274|回復: 1
收起左側

時間片輪詢法中,如何處理同一時間不同任務

[復制鏈接]
ID:505446 發表于 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();//任務二倒計時
}
這兩種方法行不行的通?或者有沒更好的方法能夠解決?
注:關于時間片輪解釋如下
回復

使用道具 舉報

ID:323651 發表于 2020-12-26 13:52 | 顯示全部樓層
需要注意的是,這種方法的前提是執行的 每個任務都是短小精悍的,要不然一個任務執行的時間過長,大于其它任務設置的時間片值,那其它任務就無法保證按它預設的時間片來執行。

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

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表