2

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

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

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

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

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

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

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

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

问题:

在 PC 服务器(例如,使用 i7 CPU)上实现这样一个具有数百万个代理的多代理系统的最佳策略(如果有的话)是什么?本质上,在没有共享内存和相互依赖的限制的情况下,最大化每个 CPU 的代理数量的最佳实施策略是什么?

提前致谢。

4

0 回答 0