<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > uC/OS-II 學(xué)習筆記之:任務(wù)刪除

uC/OS-II 學(xué)習筆記之:任務(wù)刪除

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

一、概念:任務(wù)的刪除就是把任務(wù)由運行態(tài)或就緒態(tài)置于睡眠態(tài),是任務(wù)創(chuàng )建的逆過(guò)程。

本文引用地址:http://dyxdggzs.com/article/201609/303413.htm

二、操作:具體操作就是把將待刪除的任務(wù)的任務(wù)控制塊從任務(wù)控制鏈表中刪除,并歸還給空任務(wù)控制鏈表,

然后在任務(wù)就緒表中把該任務(wù)的就緒狀態(tài)位置為0,這樣任務(wù)就不會(huì )再被調度器調用了。

一般情況,為了安全起見(jiàn),我們先在某個(gè)任務(wù)中提出刪除任務(wù)的請求,然后再在將待刪除任務(wù)中執行刪除操作,

即由待刪除任務(wù)自己刪除自己,而提出刪除任務(wù)請求的任務(wù)只負責提出請求。這樣的好處是可以讓待刪除任務(wù)

在合適的時(shí)候刪除自己,以利于在刪除自身之前釋放掉其占用的資源。

三、函數

(1)請求刪除任務(wù)函數:OSTaskDelReq(prio)//prio為待刪除任務(wù)的優(yōu)先級別

(2)提出刪除請求的任務(wù)在調用該函數時(shí),具體使用如下:

//只有當待刪除任務(wù)不存在了,就跳出循環(huán)

while (OSTaskDelReq(1) != OS_TASK_NOT_EXIST)

{

OSTimeDly(1);//延時(shí)一個(gè)時(shí)鐘節拍

}

(3)待刪除任務(wù)在調用該函數時(shí),具體使用如下:

if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ)

{

OSTaskDel(OS_PRIO_SELF);//刪除任務(wù)自身

}

四、典型應用

//調用刪除任務(wù)函數的任務(wù)

//任務(wù)1,設優(yōu)先級別為1

void TaskLed0(void *pdata)

{

while (1)

{

LED0 = !LED0;

OSTimeDlyHMSM(0, 0, 0, 400);

while (OSTaskDelReq(2) != OS_TASK_NOT_EXIST)

{

OSTimeDly(1);//延時(shí)一個(gè)時(shí)鐘節拍

}

}

}

//被刪除任務(wù)

//任務(wù)2,設優(yōu)先級別為2

void TaskLed1(void *pdata)

{

while (1)

{

LED1 = !LED1;

OSTimeDlyHMSM(0, 0, 0, 400);

//判斷是否有其它任務(wù)發(fā)出了刪除自身的請求

if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ)

{

OSTaskDel(OS_PRIO_SELF);//刪除任務(wù)自身

}

}

}

解析:這就是一個(gè)在任務(wù)1里提出刪除任務(wù)2的請求,然后任務(wù)2刪除自身的例子。

參: 任哲 《嵌入式實(shí)時(shí)操作系統-II原理及應用》

參: 盧有亮 《嵌入式實(shí)時(shí)操作系統原理與實(shí)踐》



關(guān)鍵詞: uC/OS

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>