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

这是一个开放式问题。我应该考虑哪些方法?

0
额外
意见: 1
什么硬件?如果CPU密集型,并且只有1个单核CPU,那么多个线程会降低性能。另外,如果你需要并行处理一组PC,那么与一台PC上的多个线程相比,这是一个非常不同的动物。
额外 作者 mbeckish,

4 答案

有一些并行的.NET扩展,目前正在测试中,可以在微软的并行计算开发人员中心。他们有一些有趣的项目,你会期待像Parallel foreach和一个名为PLINQ的并行版本的LINQ。有关扩展程序的一些最佳信息位于第9频道

0
额外

@Larsenal

如果你想在.NET之外进行分支,关于英特尔的线程构建模块已经有很多讨论,一个用于C ++的并行库。

0
额外

你的第一步是找到并理解你的问题中的并行性。编写多线程代码非常简单,它的执行效率不及它所替代的单线程代码。 “并行编程模式”(亚马逊)是一个很好的介绍到关键概念。

一旦你有一个可行的设计,开始阅读MSDN杂志存档“并发”主题中的文章(链接),特别是由Jeff Richter编写的任何内容。这些将为您提供特定于Windows和.NET的线程结构的细节。 (Richter的“通过C#(亚马逊)的多线程部分很短,但非常有见地 - 强烈推荐。)

0
额外

有很多选择,最好的解决方案将取决于您试图解决的问题的性质。如果您正在尝试解决不平行的问题,那么划分和平行化任务将是微不足道的。在这种情况下,挑战在于分配和管理所使用的数据。

一些建议是:

0
额外