用于并行化CPU密集型.NET应用程序的当前最佳选择是什么?

时间:2020-03-05 18:37:34  来源:igfitidea点击:

这是一个开放式的问题。我应该考虑什么方法?

解决方案

回答

.NET有一些并行扩展,目前正在测试中,并且可以在Microsoft的Parallel Computing开发人员中心获得。他们有一些有趣的项目,例如Parallel foreach和称为PLINQ的LINQ并行版本。有关扩展的一些最佳信息是在Channel 9上。

回答

我认为,如果考虑到最佳选择,我们还可以包括非.NET专用的并行处理方法。

回答

@拉森纳

如果我们想分支到.NET之外,则有很多关于Intel的线程构建模块的讨论,它是C ++的并行库。

回答

第一步是找到并了解问题中的并行性。编写性能好于其替换的单线程代码确实很容易。 "并行编程模式"(Amazon)对关键概念进行了很好的介绍。

一旦有了可行的设计,就开始阅读《 MSDN杂志》档案(链接)中"并发"主题中的文章,尤其是Jeff Richter撰写的任何文章。这些将为我们提供Windows和.NET特有的线程结构的基本知识。 (Richter的"通过C(Amazon)进行CLR"中的多线程部分虽然简短,但强烈建议我们进行深入分析。)

回答

有很多选择,最好的解决方案将取决于我们要解决的问题的性质。如果我们要解决一个令人尴尬的并行问题,那么划分和并行化这些任务将是微不足道的。在那种情况下,挑战将在于分发和管理所使用的数据。

一些建议是:

  • ICE Grid具有对.Net和其他常见语言的绑定
  • Velocity是Microsoft的Oracle(Tangersol)Coherence版本
  • Microsoft Compute Cluster Server即将推出的HPC产品
  • 数据Synapse网格服务器