UCOS_II学习笔记---任务管理之请求删除任务函数分析

    有时候,如果任务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); //返回删除的信息

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值