【发布时间】:2014-02-13 18:15:03
【问题描述】:
我应该在嵌入式 Linux 环境中使用什么,System V 消息队列或 Posix 消息队列?项目中常用的是什么?
【问题讨论】:
我应该在嵌入式 Linux 环境中使用什么,System V 消息队列或 Posix 消息队列?项目中常用的是什么?
【问题讨论】:
两者都有相同的基本工具——信号量、共享内存和消息队列。它们为这些工具提供了稍微不同的界面,但基本概念是相同的。一个显着的区别是 POSIX 为消息队列提供了一些 Sys V 没有的通知功能。 (参见 mq_notify()。)
Sys V IPC 已经存在了很长时间,这具有一些实际意义。
与 System V 消息队列相比,POSIX 消息队列还具有以下特定优势:
消息通知功能允许在消息到达先前为空的队列时通过信号或线程实例化异步通知(单个)进程。
在 Linux(但不是其他 UNIX 实现)上,可以使用 poll()、select() 和 epoll() 监视 POSIX 消息队列。 System V 消息队列不提供此功能。
【讨论】:
select(2)。根据 mq_open(2) 联机帮助页,截至 2016 年,FreeBSD 和 NetBSD 上的 select(2) 支持 POSIX MQ。