我正在尝试用 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() 时阻塞。我认为这是一个非常普遍的问题,应该有一些好的开源解决方案可用。如果不是,请建议一些更有效的解决方案,而不是基于并发哈希图(C++ Intel 线程)的方法。不幸的是,我在谷歌上搜索的数量并不多。