我想计算一个简单的可并行计算(例如 Mandelbrot),Orleans 在不同的颗粒上并行计算,并在颗粒完成后将结果合并在一起。但是,我不确定如何执行此操作,或者 Orleans 是否是解决此类问题的正确框架。另外让我提一下,这不会是任何将投入生产的项目,我只是在玩弄奥尔良。
到目前为止,这是我的想法:我有一个graintype(我们称之为“maingrain”),它是客户端的入口点(也可能是grain)。然后这个grain估计需要的处理能力,并将任务分成更小的部分,这些小部分从另一个graintype分配给其他grain(我将这些称为“subgrains”)。让这些 subgrains 完成工作并等待可以返回给客户端的结果没什么大不了的,但是我不确定如何处理 subgrains。
可以说,有一个电话我想使用 10 个子粒。我通过一个新的 GUID 获得每个并让它们工作。他们完成了,客户得到了结果。现在有一个电话我想使用 X 子粒:
- 我是否应该简单地使用 X 个新 GUID 激活 X 个新子粒并让垃圾收集器进行清理?
- 我是否应该以某种方式重用以前激活的子颗粒(某种池),我怎么知道一个子颗粒已经可以重用(=不忙)?
- 如果我想使用多个主干,会发生什么。每个人都处理自己的子粒吗?
你会怎么做?谢谢你。