UNIX消息队列是否维护消息的顺序?

UNIX消息队列是否维护消息的顺序?,unix,mqueue,Unix,Mqueue,如果在UNIX/Linux/BSD/OSX下,我在应用程序A中使用以下API序列: msgq_id = mq_open( full_queue_name, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &msgq_attr); mq_send(msgq_id, ptrData1, len1, 0);

如果在UNIX/Linux/BSD/OSX下,我在应用程序A中使用以下API序列:

    msgq_id = mq_open(  full_queue_name,
                        O_RDWR | O_CREAT,
                        S_IRWXU | S_IRWXG,
                        &msgq_attr);
    mq_send(msgq_id, ptrData1, len1, 0);
    mq_send(msgq_id, ptrData2, len2, 0);
    ...
应用程序B中的事件序列:

    mqd_t open_res = mq_open(full_queue_name, O_RDONLY);
    ...
    mq_receive(...)
    mq_receive(...)
。。。我是否可以保证消息队列维护消息的顺序?
也就是说,应用程序B将首先从ptrData1接收数据,然后从ptrData2接收数据

来自linux上的
man mq\u send
(重点添加):

msg_prio参数是一个非负整数,用于指定此消息的优先级。消息按优先级降序放置在队列中,具有相同优先级的较新消息放置在具有相同优先级的较旧消息之后。


所以,是的,您有一个保证。

您得到的消息是最早的、优先级最高的消息。因此,如果您以相同的优先级发送所有邮件,那么您总是以相同的顺序接收它们