我有一个for循环,我想用PLINQ的Parallel.ForEach()来并行化。
这里的关键是,我调用来进行计算的C++库肯定不是线程安全的,因此,任何计划将其并行化都需要跨多个进程进行。
我在考虑使用WCF来创建一个“分发器”进程,“客户端”和多个“计算器”可以连接到队列,并向队列添加/删除项目,然后“计算器”将结果直接发送回客户端,客户端可以在接收到结果时更新gui。这种架构将允许我使用尽可能多的“计算器”上线,就像我看到的那样,甚至可以跨多台计算机使用它们,从而创建一个所有客户端都可以共享的潜在的处理能力群。
我只是想知道是否有人有这样做的经验,是否有现有的应用程序块或框架可以用来为我构建它。PLINQ在进程中执行此操作。有没有DPLINQ (分布式)之类的?
另外,如果这不存在,有没有人想对我提出的架构提出意见?有什么明显的陷阱吗?有没有人认为它会成功!?
发布于 2011-02-25 10:20:09
听起来你可能在找Dryad。它现在是微软的一个研究项目,但他们确实有一个“学术版本”可用。我的理解是,他们也在2011年底的某个时候为RTM更好地生产它(可能是与Azure的某种集成)。Mary Jo Foley报道了更多关于这个here的内容。
发布于 2011-02-25 10:29:35
控制/调度分布式工作的一个长期标准是MPI。我只在C++中使用过它,但是存在许多语言的实现。快速谷歌提示,MPI.Net可能是.Net的一个很好的实现!
https://stackoverflow.com/questions/4993022
复制相似问题