我是Scala的新手,特别是Actors,我的问题是如此基本,我发现的在线资源并没有涵盖它.
我有一个CPU密集型,易于并行化的算法,将在n核机器上运行(我不知道n).如何在Actors中实现这一点,以便所有可用的内核解决问题?
我想到的第一种方法是简单地将问题分解成m个部分(其中m是一些像10,000的中等数字)并创建m个 Actors,每个部分一个,给每个Actor一个小部分,然后让它们去.
不知何故,这让我觉得效率低下.数以万计的演员只是闲逛,等待一些CPU爱,毫无意义地切换上下文......
然后我想,制作一些数量较少的Actors,然后每一个都要喂几个.问题是,没有理由期望这些部分的大小相同,因此一个核心可能会陷入困境,其中许多任务仍然排队,而其他核心则处于空闲状态.
我和一位知道哪位演员忙碌的主管在一起,并最终意识到这必须是一个已解决的问题.必须有一个标准模式(甚至可能是标准库)来处理这个非常通用的问题.有什么建议?