我正在尝试用 C++ 开发一个 p2p 分布式并发编程解决方案。为了获得更高的吞吐量,我观察到需要“来回”并发和可扩展的网络解决方案,就像 AKKA 提供的参与者模型一样。不幸的是,在 C++ 中没有可用的 actor 模型的可靠解决方案。 libcppa 可用,但只有 Beta 质量。在 zeroMQ 或 Boost.asio 等中是否有任何可扩展和并发的解决方案做同样的事情?我想以编程方式非常快速且以可扩展的方式执行以下操作。
假设我有一个包含 N 个节点的集群,其中包含一组单独的对象。当一个节点需要一个远程对象时,它会发送一个请求并返回一个对象作为响应。目前我按照以下方式进行:
Request req = Network.request(Node x, objectId id);
req.waitforResponse( ); //Implemented through Conc-Hashmap of requests and wait & signal
Object obj = req.response().getObject();
// Do sth with object.
我不想自己实现最后两行代码。我希望它由网络库本身完成。最好的解决方案是,如果我能在某种“ future ”数据结构中获得“req”对象,它只会在调用 getObject() 时阻塞。我认为这是一个非常普遍的问题,应该有一些好的开源解决方案可用于它。如果不是,请提出一些比基于 Concurrent hashmap(C++ Intel 线程)的方法更有效的解决方案。不幸的是,我大量的谷歌搜索并没有带来多少返回。
最佳答案
因为没有人回答。我只是更新我使用的解决方案。我将 MsgConnect 与我的线程池一起使用来处理事件和回调。
关于c++ - c++中面向性能的消息回调解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023137/