gpt4 book ai didi

c - msgget() 和 mq_open 之间的区别

转载 作者:IT王子 更新时间:2023-10-29 00:52:40 26 4
gpt4 key购买 nike

我阅读了有关消息队列操作的信息,例如 msgget()、msgsnd() 和 msgrcv()。但是当我在堆栈溢出上搜索消息队列相关问题时,我才知道还有另一组消息队列操作,例如mq_open()、mq_send()、mq_receive()。任何人都可以告诉我这两种类型的消息队列之间有什么区别以及哪种类型的消息队列被广泛使用?

最佳答案

msgXXX 家族继承自 SysV。 mq_XXX 系列由 POSIX 创建。然而,这两个系列都是 POSIX 的一部分。

这两个系列的功能集有些不同,最重要的是 SysV 变体允许指定不同的消息类型。这为处理消息和分配优先级的方式提供了灵 active 。相比之下,POSIX 家族总是以最高优先级返回最早的消息。

通常 POSIX 系列是更好的选择,除非您确实需要使用 SysV 的某些东西。 POSIX 接口(interface)也不那么繁琐。一个额外的好处(在 Linux 上)是表示队列标识符的 POSIX mqd_t 类型实际上是一个文件描述符。这允许通过 selectpoll 和类似工具极其方便地使用 POSIX 队列。

关于c - msgget() 和 mq_open 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com