我需要查看一个消息队列而不删除它们。 只要符合某些标准,我将继续并删除消息队列项目。 这个怎么做? 以下是我所知道的API – 但似乎没有支持窥视。
mq_close()
– closures消息队列
mq_getattr()
– 获取消息队列的当前属性
mq_notify()
– 在队列变为非空时通知调用进程
mq_open()
– 打开或创build一个消息队列
mq_receive()
– 从队列中接收消息
mq_send()
– 将消息放入消息队列中
mq_setattr()
– 设置消息队列的标志
mq_unlink()
– 取消链接(即删除)消息队列
有没有办法在不删除邮件的情况下偷看邮件?
偷看对于消息队列来说可能是一个坏主意,因为像sehe指出的那样,竞争条件的危险。 假设你曾经偷看过一条消息; 由于您无法锁定队列,因此您将无法可靠地检索到相同的邮件。 如果有两个进程从同一个队列接收相互排斥的消息,则应该考虑将这些消息分成两个队列,以便设计和竞争条件稳定。
做出的答案很简短:偷看是不太可能的,因为它需要明确的锁定语义来稳定地执行它。