我正在尝试用C ++实现多代理系统。为了最大化每台PC的代理数量,我想到了以下高级设计:
每个代理都将表示为类的实例。 (在多代理系统中,代理是独立/自治实体)。
每个实例化的代理都将作为一个线程生成。
如果操作系统(Windows或Linux)允许最多A个进程,并且每个进程允许产生最多B个线程,则代理总数将为A x B.
< / LI>代理将使用发布者/订阅者消息代理相互通信。计划使用RabbitMQ。
要使结果在统计上有效,要求是有几百万个代理人(例如500万)。
理想情况下,我希望将每个代理实现为一个进程,而不是一个线程。原因是,避免共享内存瓶颈和代理之间的相互依赖性。例如。特定的线程崩溃或进程崩溃可能导致整个线程池崩溃。代表过程的代理人不会有这样的限制。
但是,据我所知,操作系统中进程数量的上限是有限的(可能有几千个进程)?如果我的理解是正确的,那么几百万个代理商的要求将不适用于仅限流程的策略。
问题:
在PC服务器上实现具有数百万代理的这种多代理系统(例如,使用i7 CPU),最好的策略(如果有的话)是什么。从本质上讲,什么是最好的实现策略最大化每个CPU的代理数量,而不受共享内存和相互依赖性的限制?
提前致谢。