C++中进程间通信的最佳方式

Qub*_*euc 37 c++ memory boost shared ipc

我有两个进程,一个将查询其他数据.在有限的时间内将有大量的查询(每秒10000次),每秒将传输数据(> 100 mb).数据类型将是一个整数类型(双,int)我的问题是以哪种方式连接这个过程?

共享内存,消息队列,lpc(本地过程调用)或其他....

而且我想问你建议哪个图书馆?顺便提一下,请不要建议MPI.编辑:在windows xp 32位下

Joh*_*itb 39

一个词:Boost.InterProcess.如果真的需要快速,共享内存是可行的方法.由于操作系统在虚拟和物理地址之间进行通常的映射,因此几乎没有开销,因此数据不需要复制.您只需要了解并发问题.

对于实际发送关闭查询等命令,我会使用消息队列.我之前使用localhost网络编程来做这件事,并且在我知道boost之前使用了手动共享内存分配.该死的如果我需要重写应用程序,我会立即选择提升.Boost.InterProcess使您更容易.看看这个.

  • 我以前的评论是错误的:为了从low-priv向high-priv发送消息(即允许low-priv打开由high-priv创建的队列),必须设置适当的权限对象,请参阅[this](http ://stackoverflow.com/questions/8758896/setting-permission-for-shared-memory-created-by-boost) (2认同)

小智 6

我会使用共享内存来存储数据,并使用消息队列来发送查询.