系统V - LIFO方式

时间:2017-06-08 08:43:01

标签: c linux posix system

我正在使用System V来管理消息队列。 我成功地制作了一个工作原型,一切都按预期工作,但是我希望有一个LIFO队列而不是FIFO(预期最后发送的msgsnd消息是第一次读取msgget)。

这可能吗?

2 个答案:

答案 0 :(得分:2)

如果您正确管理邮件类型,则为是。 msgrcv手册指定:

  

参数msgtyp指定请求的消息类型   如下:

     
      
  • 如果msgtyp为0,则会收到队列中的第一条消息。

  •   
  • 如果是msgtyp   如果大于0,则收到msgtyp类型的第一条消息。

  •   
  • 如果   msgtyp小于0,即最低类型的第一条消息   小于或等于收到msgtyp的绝对值。

  •   

然后,如果您发送的邮件严重减少msgtyp,则msgtyp等于LONG_MIN的提取将始终为您提供上次发送的邮件。在这种情况下,msgtyp扮演着优先级的角色,1是最伟大的角色。

答案 1 :(得分:-1)

我认为这是不可能的。

术语“队列”表示FIFO。见维基百科:

  

队列(抽象数据类型)

     

在计算机科学中,队列(/kjuː/ KYEW)是一种特殊的抽象数据类型或集合,其中集合中的实体按顺序保存,集合上的主要(或唯一)操作是附加的实体到后端位置,称为入队,并从前端位置移除实体,称为出队。这使得队列成为先进先出(FIFO)数据结构。