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”。