UCOS_II學習筆記—任務管理之請求刪除任務函數分析

來源:互聯網
上載者:User

    有時候,如果任務A擁有記憶體緩衝區或訊號量之類的資源,而任務B想刪除該任務,這些資源就可能由於沒被釋放而丟失。在這種情況下,使用者可以想法子讓擁有這些資源的任務在使用完資源後,先釋放資源,再刪除自己。使用者可以通過OSTaskDelReq()函數來完成該功能。

 

函數名

OSTaskDelReq

參數

Prio要刪除任務的優先順序(0xFF表示當前任務)

功能描述

請求刪除任務

函數原型

INT8U OSTaskDelReq(INT8U prio)

 

 

 

{

    if (prio == OS_PRIO_SELF)
//判斷調用此函數時,是否使用0xFF表示當前函數的優先順序

    {            
 //調用該函數時,如果要刪除當前任務,不知道優先順序,可以使用0xFF代替

    

        OS_ENTER_CRITICAL();  
       //進入臨界區0       

        
stat = OSTCBCur->OSTCBDelReq; //當前任務收到刪除請求

                            
         //當被刪除任務被調度時,會檢查OSTCBDelReq的值

                            
         //為OS_TASK_DEL_REQ時,調用OSTaskDel()

   

        OS_EXIT_CRITICAL();
          //退出臨界區0

        

        return (stat);

    }

    

    OS_ENTER_CRITICAL();
//進入臨界區0

    ptcb = OSTCBPrioTbl[prio];

    if (ptcb != (OS_TCB *) 0)
//判斷要刪除的任務是否存在

    {

        ptcb->OSTCBDelReq = OS_TASK_DEL_REQ;
//要刪除的任務收到刪除請求(記錄在TCB中)

        err = OS_NO_ERR;

    }

    else
//刪除的任務不存在

    {

        err = OS_TASK_NOT_EXIST; //

    }

    OS_EXIT_CRITICAL();
//退出臨界區0

    

    return (err);
//返回刪除的資訊

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.