想象一下,我们有X(例如30)系统的数量。每个系统都有一个 它必须运行的实体数组(系统的实体数量各不相同)。基本上,系统包含算法,实体包含要采取行动的数据。每个系统都可以指定它可以作用的实体类型,因此实体可以由多个系统操作。
系统按链排列,这意味着我们按顺序运行,而不是在并行运行。每次都以相同的顺序调用它们来对其实体进行操作(我们所要做的就是调用它们的System :: process方法。
该系统链每秒运行60次。
目前,它的实现使得系统在单个运行上运行,并按顺序处理它的实体。我想要并发。
系统没有状态,因此我们可以安全地在多个线程上同时调用它们的进程方法,因为我们告诉每个方法调用系统的实体应该在哪个部分工作。
示例:我们确定我们有2个可用核心,因此我们在2个线程上运行每个系统。其中一个线程调用系统的进程方法并告诉它从0到20进行处理(包含实体的数组的索引),另一个线程调用相同系统的进程方法并告诉它处理从20到40岁。
现在的问题是:应该分配负载的最佳线程数是多少,考虑可能的高速缓存大小和内核以及未考虑的内容。 (也许通过测试凭经验确定?)
管理线程(线程池等)最有效的方法是什么?