【发布时间】:2012-12-04 07:46:49
【问题描述】:
我想我会使用 Boost.Interprocess 的 Message Queue 代替套接字在一台主机内进行通信。但是在深入研究之后,这个库似乎出于某种原因避开了 POSIX 消息队列工具(我的 Linux 系统支持),而是在 POSIX 共享内存之上实现。界面非常相似,您可能不会马上猜到,但似乎确实如此。
对我来说,缺点是通过shm_open(3) 获得的共享内存似乎不适用于select(2),这与通过mq_open(3) 获得的POSIX 消息队列相反。
在这种情况下,Boost 的库似乎失败了。有谁知道为什么会这样?即使 POSIX 消息队列仅在某些系统上可用,我希望 Boost 在可用的地方使用该工具,并仅在必要时重新实现它。 POSIX 系统是否存在一些我还不认识的缺陷?
【问题讨论】:
标签: select boost message-queue interprocess epoll