亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chapter4.txt

?? ucos的PDF書籍、2.00源碼以及我的學習心得
?? TXT
字號:
4.00 Creating a Task, OSTaskCreate()
只想說一處:
OS_ENTER_CRITICAL();
if(OSTCBPrioTbl[prio] == (OS_TCB *)0){
    OSTCBPrioTbl[prio] = (OS_TCB *)1;
    OS_EXIT_CRITICAL();
     ....
這里的OSTCBPrioTbl[prio] = (OS_TCB *)1;一句僅僅是為了盡快將OSTCBPrioTbl[prio]填充為一個非0的值,以表示該優先級已經被使用了,從而防止其他任務也使用這一優先級。但為什么要用(OS_TCB *)1而不是TCB的實際指針值呢?這是因為,如果要使用TCB實際的指針值,需要依次調用OSTaskStkInit和OSTCBInit兩個函數。這兩個函數都是很花時間的,如果在禁止中斷的情況下使用它們,勢必會造成很高的中斷延時。為了能夠盡早地使程序能夠恢復中斷同時又保證當前使用優先級不被其他任務使用,作者在這里使用(OS_TCB *)1作為標志。在將OSTCBPrioTbl[prio]項填寫為(OS_TCB *)1后即可恢復中斷,而同時因為OSTCBPrioTbl[prio]的值已不再為(OS_TCB *)0,故其他任務也無法使用該優先級,一舉兩得。

4.02 Task Staks
對Task Stack的建立有兩種方式:靜態方式和動態方式。
靜態方式實際上就是將Task Stack聲明為全局變量。這樣在程序編譯時,就將空間分配好了,而且該空間不會被回收,知道程序運行結束。
動態方式可以使用C語言中的malloc函數在程序運行時對地址空間進行分配,而在該空間不再需要時,使用free將其回收。
從以上討論來看,貌似使用動態方式要優越許多,其實也不盡然。動態方式可能會造成內存碎片,從而影響內存的進一步使用。而且,如果程序中存在任務需要多次建立刪除,建議使用靜態方式為其申請堆棧空間。因為若使用動態方式的話,需要反復為該任務分配和回收內存空間,增加系統的開銷。

4.04 Deleting a Task, OSTaskDel()
刪除一個任務需要以下步驟:
1、對輸入的優先級進行例行的界限檢查;
2、將任務從就緒隊列中移除,同時如果任務在等待某事件將其從等待隊列中移除;
3、將任務PCB中的OSTCBDly項賦值為0,防止任務被時間中斷處理函數OSTimeTick重新加入就緒隊列;
4、將任務PCB中的OSTCBStat項賦值為OS_STAT_RDY,防止任務被其他函數(如:OSTaskResume)重新加入就緒隊列;
5、至此為止,如果任務被切換的話,它將無法被再次調回,但此時對任務的刪除操作尚未完成需要繼續。不過,惱火的是,如果繼續在關閉中斷的情況下操作勢必會造成很大的中斷延時。為了減少中斷延時同時保證任務不被切換,在恢復中斷前,需要關閉任務調度。這項操作不需要太長的時間,只需要被延時的中斷能夠保證響應就可以了。因此,這里作者引入了一個空函數OSdummy,執行此函數僅僅是為了提供幾個指令周期的時間供被延時的中斷響應;
6、進行一些善后的處理包括減少OSTaskCtr的值、將任務使用的優先級釋放以及將任務TCB從當前使用TCB鏈表中移除并加入空閑PCB鏈表中;
7、調用OSShed函數。

4.05 Requesting to delete a task, OSTaskDelReq()
如果一個任務在執行中會控制某些資源,那么在刪除該任務時,需要首先將這些資源釋放。
為了達到以上目的,需要刪除操作的請求者與被刪除任務中都引入對OSTaskDelReq函數的呼叫。兩類任務的具體代碼流程如下:
刪除操作的請求者:
void RequestorTask (void *pdata)
{
    INT8U err;
    pdata = pdata;
    for (;;) {
        /* Application code */
        if (‘TaskToBeDeleted()’ needs to be deleted) { 
            while (OSTaskDelReq(TASK_TO_DEL_PRIO) != OS_TASK_NOT_EXIST) { 
                OSTimeDly(1); 
            }
        }
        /* Application code */ 
    }
}

待刪除任務:
void TaskToBeDeleted (void *pdata)
{
    INT8U err;
    pdata = pdata;
    for (;;) {
        /* Application code */
        if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ) { 
            Release any owned resources; 
            De-allocate any dynamic memory;
            OSTaskDel(OS_PRIO_SELF); 
        } else {
            /* Application code */
        }
    }
}
具體原理如下:
在任務的TCB中設有一名為OSTCBDelReq的變量,此變量在任務建立時被初始化為OS_NO_ERR。同時,對于OSTaskDelReq函數,如果輸入參數為OS_PRIO_SELF則只返回當前任務TCB中OSTCBDelReq的值;而如果輸入參數是一個有效的優先級值,則判斷具有此優先級的任務是否存在,若存在將該任務的OSTCBDelReq項賦值為OS_TASK_DEL_REQ并返回OS_NO_ERR,否則返回OS_TASK_NOT_EXIST。
根據以上討論,在RequestorTask函數尚未呼叫OSTaskDelReq(TASK_TO_DEL_PRIO)時,待刪除任務中OSTaskDelReq(OS_PRIO_SELF)的返回值為OS_NO_ERR,因此其執行else中的代碼進行正常的操作。而一旦RequestorTask呼叫了OSTaskDelReq(TASK_TO_DEL_PRIO),待刪除任務TCB中的OSTCBDelReq被賦值為OS_TASK_DEL_REQ,因此當再次執行TaskToBeDeleted時,將執行if內的語句,即釋放資源刪除自己。
經過上述討論,可以發現,這里OSTCBDelReq實際相當于一個郵箱的角色用于RequestorTask 與TaskToBeDeleted 之間的通信。
另外,需要說明的是,實際上也可以由待刪除任務通過調用OSTaskDelReq函數完成對自己的刪除。
在這種情況下,僅需要一個任務函數即TaskToBeDeleted ,但其代碼結構需要做一定的調整:
void TaskToBeDeleted (void *pdata)
{
    INT8U err;
    pdata = pdata;
    for (;;) {
        /* Application code */
        if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ) { 
            Release any owned resources; 
            De-allocate any dynamic memory;
            OSTaskDel(OS_PRIO_SELF); 
        } else {
            /* Application code */
            if (‘TaskToBeDeleted()’ needs to be deleted){
                while (OSTaskDelReq(PRIO_OF_CUR_TASK) != OS_TASK_NOT_EXIST) {
                     OSTimeDly(1); 
                 }
            }
            /* Application code */
        }
    }
}
最后,建議一點,這種形式的任務刪除主要用于需要掌握某些資源的任務。對于一般任務,使用此種結構也可以正常完成目標,不過這相當于將簡單的問題復雜化了,因此對于一般的任務的刪除操作還是使用普通的代碼結構要好一些。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费看日韩精品| 日韩欧美一级在线播放| 精品亚洲成a人在线观看| 亚洲电影一级黄| 一区二区在线看| 久久精品国产成人一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 久久久www免费人成精品| 精品国产乱码久久久久久免费 | 久88久久88久久久| 久久成人免费日本黄色| 久久精品国产澳门| 国产成都精品91一区二区三| 国产一区二区久久| 国产成人a级片| 91在线porny国产在线看| 99精品偷自拍| 制服丝袜中文字幕亚洲| 欧美一区二区成人| 久久亚洲二区三区| 中文字幕中文在线不卡住| 国产精品精品国产色婷婷| 一区二区三区四区不卡在线 | 欧美www视频| 久久网这里都是精品| 国产精品美女久久久久久久久久久| 国产欧美精品国产国产专区| 亚洲毛片av在线| 免费观看成人av| 91在线观看成人| 日韩欧美国产高清| 国产精品久久影院| 无码av中文一区二区三区桃花岛| 日韩二区在线观看| 国产一区高清在线| 欧美色视频在线| 国产性色一区二区| 亚欧色一区w666天堂| 国产一区二区三区精品欧美日韩一区二区三区 | 久久精品国产色蜜蜜麻豆| 成人一区二区三区视频在线观看| 色噜噜狠狠成人中文综合| 日韩精品专区在线| 亚洲欧美日本在线| 99久久精品免费| 欧美mv日韩mv| 亚洲一二三区不卡| 国产呦精品一区二区三区网站| 色综合久久中文字幕| 日韩欧美自拍偷拍| 亚洲国产视频a| 国产成a人亚洲| 日韩亚洲国产中文字幕欧美| 亚洲视频在线一区| 国产在线精品一区二区三区不卡| 在线影院国内精品| 国产精品久久久久久久久免费相片 | 欧美高清精品3d| 亚洲国产精品ⅴa在线观看| 天天操天天色综合| 97se亚洲国产综合自在线观| 久久久综合九色合综国产精品| 亚洲欧美视频一区| 99国产精品国产精品久久| 精品国产乱码久久| 日本不卡123| 在线观看av不卡| 亚洲综合无码一区二区| gogogo免费视频观看亚洲一| 久久精品夜色噜噜亚洲aⅴ| 奇米在线7777在线精品| 欧美肥妇毛茸茸| 天天色 色综合| 欧美一区二区三区不卡| 日韩电影在线观看网站| 3atv一区二区三区| 日本欧美久久久久免费播放网| 欧美三级韩国三级日本一级| 亚洲国产日韩一级| 欧美日韩国产首页| 日韩电影免费在线看| 欧美一区午夜精品| 日韩电影在线观看网站| 欧美一级日韩免费不卡| 久久99久久久久久久久久久| 欧美精品一区二区在线播放| 韩国在线一区二区| 国产精品美女久久久久高潮| 成人理论电影网| 一区二区三区在线观看视频| 在线观看欧美精品| 午夜精品久久久久久久久久| 欧美一级久久久| 国产老妇另类xxxxx| 欧美国产激情二区三区| 91成人看片片| 青青草国产成人av片免费| 精品美女在线播放| 成人激情小说网站| 亚洲香蕉伊在人在线观| 日韩精品一区二区三区蜜臀| 国产毛片精品视频| 亚洲精品视频在线观看免费 | 免费视频一区二区| 国产亚洲欧美激情| www激情久久| 精品制服美女久久| 久久一二三国产| 亚洲欧美综合另类在线卡通| 蜜桃av一区二区| 精品一区二区三区的国产在线播放| 麻豆精品在线看| 国产不卡免费视频| 国产女同互慰高潮91漫画| 亚洲大型综合色站| 色老汉av一区二区三区| 亚洲精选一二三| 久久国产精品露脸对白| 高清不卡在线观看av| 国产农村妇女毛片精品久久麻豆| 色综合久久综合| 国产一区不卡视频| 午夜私人影院久久久久| 国产免费久久精品| 日韩一区二区免费在线观看| www.亚洲国产| 激情欧美一区二区三区在线观看| 亚洲免费观看高清| 国产亚洲欧美激情| 欧美一区二区三级| 欧美伊人久久大香线蕉综合69 | 中文av一区特黄| 欧美一级高清大全免费观看| 一本久道中文字幕精品亚洲嫩| 国产一区二区三区香蕉| 日韩电影网1区2区| 午夜婷婷国产麻豆精品| 亚洲综合色区另类av| 国产精品国产a| 亚洲国产精品ⅴa在线观看| 精品美女一区二区| 日韩三级伦理片妻子的秘密按摩| 欧美在线免费观看亚洲| 91小视频在线| 91麻豆自制传媒国产之光| 成人免费视频caoporn| 狠狠色综合播放一区二区| 青青青伊人色综合久久| 午夜日韩在线观看| 亚洲高清视频在线| 亚洲成av人片| 午夜精品福利视频网站| 午夜精品久久久久久久久| 亚洲国产一二三| 亚洲一区在线观看视频| 亚洲午夜在线观看视频在线| 亚洲最大的成人av| 亚洲第一在线综合网站| 亚洲国产视频一区二区| 亚洲va国产天堂va久久en| 午夜a成v人精品| www.色综合.com| 色综合久久综合| 欧美在线观看视频一区二区三区| 91行情网站电视在线观看高清版| 色综合久久久久| 欧美日韩国产系列| 精品精品国产高清a毛片牛牛| 日韩精品一区二区三区四区| 亚洲精品一区二区三区精华液| 精品99一区二区| 国产精品久久久久婷婷二区次| 国产精品成人免费| 午夜婷婷国产麻豆精品| 精品一区二区三区免费观看 | 色综合天天性综合| 欧美性生活大片视频| 日韩欧美在线观看一区二区三区| 精品久久一区二区三区| 亚洲国产成人自拍| 亚洲 欧美综合在线网络| 国产尤物一区二区| 色婷婷一区二区三区四区| 日韩一区二区影院| 国产精品日韩精品欧美在线| 亚洲国产精品影院| 国产在线精品不卡| 91论坛在线播放| 日韩免费视频一区| 成人欧美一区二区三区| 精品一区精品二区高清| 99国产精品99久久久久久| 91麻豆精品久久久久蜜臀| 久久久久久久久久久久久夜| 亚洲激情av在线| 粉嫩av一区二区三区在线播放| 欧美体内she精高潮| 国产精品午夜在线| 日本女人一区二区三区| av高清不卡在线|