消息邮箱-emc datadomain 2500 存储设 备维护手册

时间:2021-06-09 07:52:24
【文件属性】:
文件名称:消息邮箱-emc datadomain 2500 存储设 备维护手册
文件大小:4.33MB
文件格式:PDF
更新时间:2021-06-09 07:52:24
uCOS-II 图 2.17 消息邮箱 2.24 消息队列(Message Queue) 消息队列用于给任务发消息。消息队列实际上是邮箱阵列。通过内核提供的服务,任务 或中断服务子程序可以将一条消息(该消息的指针)放入消息队列。同样,一个或多个任务可 以通过内核服务从消息队列中得到消息。发送和接收消息的任务约定,传递的消息实际上是 传递的指针指向的内容。通常,先进入消息队列的消息先传给任务,也就是说,任务先得到 的是最先进入消息队列的消息,即先进先出原则(FIFO)。然而μC/OS-Ⅱ也允许使用后进先 出方式(LIFO)。 像使用邮箱那样,当一个以上的任务要从消息队列接收消息时,每个消息队列有一张等 待消息任务的等待列表(Waiting List)。如果消息队列中没有消息,即消息队列是空,等待 消息的任务就被挂起并放入等待消息任务列表中,直到有消息到来。通常,内核允许等待消 息的任务定义等待超时的时间。如果限定时间内任务没有收到消息,该任务就进入就绪态并 开始运行,同时返回出错代码,指出出现等待超时错误。一旦一则消息放入消息队列,该消 息将传给等待消息的任务中优先级最高的那个任务,或是最先进入等待消息任务列表的任 务。图 2.18示意中断服务子程序如何将消息放入消息队列。图中两个大写的 I表示消息队 列,“10”表示消息队列最多可以放 10条消息,沙漏旁边的 0表示任务没有定义超时,将永 远等下去,直至消息的到来。 典型地,内核提供的消息队列服务如下: l 消息队列初始化。队列初始化时总是清为空。 l 放一则消息到队列中去(Post) l 等待一则消息的到来(Pend) l 如果队列中有消息则任务可以得到消息,但如果此时队列为空,内核并不将该任务 挂起(Accept)。如果有消息,则消息从队列中取走。没有消息则用特别的返回代码

网友评论