在c ++中是否有任何开源的高性能IPC类msg总线库?

时间:2009-12-01 16:13:20

标签: c++ ipc

在我目前的项目中,我有一个稍微分布式的架构,即几个可执行文件相互协作以完成任务。为了方便起见,我希望我能拥有一个可靠的“骨干”消息总线:当一个可执行文件连接到msg总线时,它可以在新的msg到达时接收回调。同样,它可以向总线发布新消息。

我知道有些公司会提供这样的现成解决方案,但是,OSS中有免费的解决方案吗?

4 个答案:

答案 0 :(得分:4)

如果您不需要Windows支持,并且您的流程不会分布在不同的计算机上,我肯定会给D-Bus看一下。

它是用C语言编写的(根据网页)绑定“Qt,GLib,Java,C#,Python等”。

list of projects using D-Bus也令人印象深刻。

答案 1 :(得分:3)

您是否考虑过使用基于RabbitMQ的AMQP?

C binding有一些库可以为C ++“装扮”。

  

RabbitMQ是一个完整而高度的   可靠的企业邮件系统   基于新兴的AMQP   标准。它是根据该许可证授予的   开源Mozilla公共许可证和   具有平台中立的分布,   加上特定于平台的包和   捆绑,便于安装。


当然,如果你需要“分布较少”的东西,你可以直接使用DBus。

答案 2 :(得分:1)

除了给定的答案,Boost.Interprocess应该是一种便携且高效的替代方案 如果您真的在寻找高性能,那么也不要使用IPC库进行进程内通信 - 这将会导致性能下降。

答案 3 :(得分:0)

与上面的AMQP想法类似,您可能希望查看ZeroMQ(http://www.zeromq.org/)。我没有亲自使用它,但我知道那些喜欢它的人。