18.1-uC/OS-III等待多个内核对象

等待的多个内核对象是指多值信号量和消息队列的任意组合

如果想要使用“等待多个内核对象”,就必须事先使能“等待多个内核对象”。“等待多
个内核对象” 的使能位于“
os_cfg.h”。

1.OSPendMulti ()

OSPendMulti () 函数用于等待多个内核对象(多值信号量或消息队列)。

OSPendMulti () 函数的定义位于“os_pend_multi.c”。

 

OSPendMulti () 函数中,会调用 OS_PendMultiValidate () 函数验证等待对象是否均属于
多值信号量或消息队列,如果不是,就返回,不继续执行等待。
OS_PendMultiValidate ()
数的定义位于“
os_pend_multi.c”。

 

OSPendMulti () 函数中, 还会调用 OS_PendMultiGetRdy () 函数查看是否有等待对象
已被发布可供立即使用。
OS_PendMultiGetRdy () 函数的定义位于“os_pend_multi.c”。

 

如果 OS_PendMultiGetRdy () 函数发现已有等待对象可用, OSPendMulti () 函数就会返
回,继续运行任务。如果发现没有可用等待对象, 就会继续调用
OS_PendMultiWait() 函数
阻 塞 当 前 运 行 任 务 , 等 待 内 核 对 象 。
OS_PendMultiWait() 函 数 的 定 义 也 位 于
os_pend_multi.c”。

 

posted @ 2018-08-09 09:27  西贡小傻  Views(182)  Comments(0Edit  收藏  举报