我正在使用System V来管理消息队列。
我成功地制作了一个工作原型,一切都按预期工作,但是我希望有一个LIFO队列而不是FIFO(预期最后发送的msgsnd
消息是第一次读取msgget
)。
这可能吗?
答案 0 :(得分:2)
如果您正确管理邮件类型,则为是。 msgrcv
手册指定:
参数msgtyp指定请求的消息类型 如下:
如果msgtyp为0,则会收到队列中的第一条消息。
如果是msgtyp 如果大于0,则收到msgtyp类型的第一条消息。
如果 msgtyp小于0,即最低类型的第一条消息 小于或等于收到msgtyp的绝对值。
然后,如果您发送的邮件严重减少msgtyp
,则msgtyp
等于LONG_MIN
的提取将始终为您提供上次发送的邮件。在这种情况下,msgtyp
扮演着优先级的角色,1是最伟大的角色。
答案 1 :(得分:-1)
我认为这是不可能的。
术语“队列”表示FIFO。见维基百科:
队列(抽象数据类型)
在计算机科学中,队列(/kjuː/ KYEW)是一种特殊的抽象数据类型或集合,其中集合中的实体按顺序保存,集合上的主要(或唯一)操作是附加的实体到后端位置,称为入队,并从前端位置移除实体,称为出队。这使得队列成为先进先出(FIFO)数据结构。