zoukankan      html  css  js  c++  java
  • 关于OS_PRIO_SELF的说明

    在看ucosii 中关于删除任务的函数 OSTaskDel 时看到

    if (prio == OS_PRIO_SELF) {                                 /* See if requesting to delete self    */
         prio = OSTCBCur->OSTCBPrio;                             /* Set priority to delete to current   */
        }

    这样一段代码,一开始不太理解,自己仔细想了想,下面说一下自己的理解。

    我先查了一下 OS_PRIO_SELF 是在uCOS_II.H中定义的:

    #define  OS_PRIO_SELF           0xFF                    /* Indicate SELF priority                      */

     

    即 OS_PRIO_SELF 是一个全局变量,且值是0xFF 。那么这个数字有什么用那?

    我是这样理解的,这个常量使用在有关ucos中任务处理的函数上的,用它来代表一个任务自己的优先级,你可能要问了OS_PRIO_SELF的值不是0xff 吗,他怎么代表当前任务自己的优先级那。是这样的,在每一个函数内部都有我上面用红的字体表示出的代码,把当前真实的优先级赋给prio。这样当你不知道当前任务的优先级时,你就可以用OS_PRIO_SELF来代替了。反正它函数内部有转换成真正的优先级的代码。

    这样对我们编程者来说更方便。

    例如:你想用OSTaskDel ()这个函数删除当前的任务,一种方法是你给函数传当前任务的优先级(前提是你自己知道)即OSTaskDel (24)【假设当前任务的优先级就是24 】,另一种方法是直接写 OSTaskDel (OS_PRIO_SELF )。反正在函数内部会把真正的当前任务优先级赋给prio的。

  • 相关阅读:
    在java中有关于反射的皮毛----自己的简略认知
    在java中异常中的题目---重要的一点
    在一个陌生的环境里学习新的-----单例
    在java开发环境中,快捷键的使用及用法
    指针(一)
    #ifdef、#ifndef、#else、#endif执行条件编译
    oc中的数组
    控制循环结构
    oc中的枚举
    oc中类的实例化及方法调用
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3357899.html
Copyright © 2011-2022 走看看