<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201609/303413.htm

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

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

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

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

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

          三、函數(shù)

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

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

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

          while (OSTaskDelReq(1) != OS_TASK_NOT_EXIST)

          {

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

          }

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

          if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ)

          {

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

          }

          四、典型應(yīng)用

          //調(diào)用刪除任務(wù)函數(shù)的任務(wù)

          //任務(wù)1,設(shè)優(yōu)先級(jí)別為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í)鐘節(jié)拍

          }

          }

          }

          //被刪除任務(wù)

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

          void TaskLed1(void *pdata)

          {

          while (1)

          {

          LED1 = !LED1;

          OSTimeDlyHMSM(0, 0, 0, 400);

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

          if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ)

          {

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

          }

          }

          }

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

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

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



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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();