- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我阅读了有关消息队列操作的信息,例如 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
类型实际上是一个文件描述符。这允许通过 select
、poll
和类似工具极其方便地使用 POSIX 队列。
关于c - msgget() 和 mq_open 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785230/
我最近遇到了这样一个关于msgget的问题。 while(1) { msqid = msgget(IPC_PRIVATE,IPC_CREAT); if(msqid<0)
我有简单的代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #in
我正在使用 SysV 发送/接收消息。 在我的 Server 类的线程函数内部是我创建 key 和 MQ 的地方。这已成功完成,新 MQ 的 mqID 存储在 struct msgbuf 中名为 mt
我正在学习 IPC 编程。作为其中的一部分,我尝试了以下两个代码来了解消息队列.... 消息队列创建者或消息发送者 struct my_msgbuf { long mtype; cha
我阅读了有关消息队列操作的信息,例如 msgget()、msgsnd() 和 msgrcv()。但是当我在堆栈溢出上搜索消息队列相关问题时,我才知道还有另一组消息队列操作,例如mq_open()、mq
这是我的问题:我正在尝试在服务器和客户端之间实现消息队列。为此,我有两个文件,msq-server.c和 msq-client.c . 我使用函数 msgctl(msqid, IPC_RMID, &b
当 msgget 运行时我收到一个错误,我的代码在到达 msgget 行时给我返回:“:Function not Implemented”。我尝试了很多选项,我在 Windows 10 上运行 UBU
我是一名优秀的程序员,十分优秀!