如何清除/刷新VxWorks中的消息队列缓冲区?

时间:2012-07-27 04:56:01

标签: message-queue vxworks rtos

我想知道,是否有任何方法可以清除所有在1 msgQId上流水线的消息?????

1 个答案:

答案 0 :(得分:3)

没有内置API来刷新邮件队列中的所有邮件 如果您要做的只是丢弃队列中的所有消息,可以使用以下快速方法:

void discardQMessages(MSG_Q_ID id) {
  while(
        msgQReceive(id, NULL, 0, NO_WAIT) != ERROR
       )    ;

  if {errno != S_objLib_OBJ_UNAVAILABLE)
     /* Uh oh... got some problem */
}

当您从任何OS API调用中收到错误时,始终检查错误。