在C ++中实现百万代理多代理系统

时间:2014-11-26 17:12:19

标签: c++ multithreading parallel-processing multi-agent

我正在尝试用C ++实现多代理系统。为了最大化每台PC的代理数量,我想到了以下高级设计:

  • 每个代理都将表示为类的实例。 (在多代理系统中,代理是独立/自治实体)。

  • 每个实例化的代理都将作为一个线程生成。

  • 如果操作系统(Windows或Linux)允许最多A个进程,并且每个进程允许产生最多B个线程,则代理总数将为A x B.

    < / LI>
  • 代理将使用发布者/订阅者消息代理相互通信。计划使用RabbitMQ。

  • 要使结果在统计上有效,要求是有几百万个代理人(例如500万)。

理想情况下,我希望将每个代理实现为一个进程,而不是一个线程。原因是,避免共享内存瓶颈和代理之间的相互依赖性。例如。特定的线程崩溃或进程崩溃可能导致整个线程池崩溃。代表过程的代理人不会有这样的限制。

但是,据我所知,操作系统中进程数量的上限是有限的(可能有几千个进程)?如果我的理解是正确的,那么几百万个代理商的要求将不适用于仅限流程的策略。

问题:

在PC服务器上实现具有数百万代理的这种多代理系统(例如,使用i7 CPU),最好的策略(如果有的话)是什么。从本质上讲,什么是最好的实现策略最大化每个CPU的代理数量,而不受共享内存和相互依赖性的限制

提前致谢。

0 个答案:

没有答案