我阅读了有关消息队列操作的信息,例如 msgget()、msgsnd() 和 msgrcv()。但是当我在堆栈溢出上搜索消息队列相关问题时,我发现还有另一组消息队列操作,例如 mq_open()、mq_send()、mq_receive()。谁能告诉我这两种类型的消息队列之间有什么区别以及哪种类型的消息队列被广泛使用?
The msgXXX
家族继承自SysV。这mq_XXX
family 是由 POSIX 创建的。然而,这两个家族都是 POSIX 的一部分。
这两个系列有一些不同的功能集,最重要的是 SysV 变体允许指定不同的消息类型。这提供了处理消息的方式和分配优先级的灵活性。相比之下,POSIX 系列始终返回具有最高优先级的最旧消息。
一般来说,POSIX 系列是更好的选择,除非您确实需要使用有关 SysV 的某些内容。 POSIX 接口也不太麻烦。一个额外的好处(在 Linux 上)是 POSIXmqd_t
表示队列标识符的类型实际上是文件描述符。这允许极其方便地使用 POSIX 队列select
, poll
和类似的设施。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)