在我目前的項目中,我有一個稍微分散的體系結構,即多個可執行文件相互協作完成任務。爲了使事情更容易,我希望我可以有一個可靠的'主幹'消息總線:當一個可執行程序掛接到消息總線時,它可以在新消息到達時接收回調。同樣,它可以向公共汽車發佈新消息。在C++中是否有任何開源的高性能IPC類msg總線庫?
我知道有些公司提供的現成的商用解決方案這樣的,但是,有沒有在OSS任何免費的嗎?
在我目前的項目中,我有一個稍微分散的體系結構,即多個可執行文件相互協作完成任務。爲了使事情更容易,我希望我可以有一個可靠的'主幹'消息總線:當一個可執行程序掛接到消息總線時,它可以在新消息到達時接收回調。同樣,它可以向公共汽車發佈新消息。在C++中是否有任何開源的高性能IPC類msg總線庫?
我知道有些公司提供的現成的商用解決方案這樣的,但是,有沒有在OSS任何免費的嗎?
如果您不需要Windows的支持,你的進程不會分散在不同的計算機上,我肯定給D-Bus看看。
它是用C語言編寫的功能(根據網頁)綁定 「的Qt,油嘴,Java和C#,Python等)」。
我不記得D-Bus是高性能的......還是在去年激烈地改變了一些東西? – 2009-12-01 16:42:19
它似乎也WinDbus,Windows端口落後於此,這就是爲什麼我從來沒有試圖在我的發展中集成D-Bus – 2009-12-01 17:51:11
除了給出答案,Boost.Interprocess應該是便攜和高性能的替代方案。
如果您真的在尋找高性能,那麼也可以放棄使用IPC庫進行進程間通信的想法 - 這會導致性能損失。
廢棄有利於共享內存? – 2014-08-01 04:36:01
這是關於進程間通信,沒有共享內存或其他需要的IPC機制。 – 2014-08-04 09:44:12
上述AMQP的想法類似,您可能想看看ZeroMQ(http://www.zeromq.org/)。我沒有親自使用它,但我知道很多人喜歡它。
什麼環境和用例是? *略*分佈意味着什麼? – 2009-12-01 16:43:51
基本上,有2個exe,一個是數據發佈者,另一個是接收者。然而,讓事情更復雜一點的是,在接收器內部還需要一個msg總線,以便一個對象可以將數據/信號發佈到其他對象。 我寧願爲這兩個用例使用一個單一的msg總線,而不是其中的兩個。 – 2009-12-02 13:26:39