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

时间:2008-08-04 16:30:46

标签: .net parallel-processing

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

5 个答案:

答案 0 :(得分:8)

您的第一步是找到并理解问题中的并行性。编写多线程代码并不比它替换的单线程代码更好。 “并行编程模式”(Amazon)是关键概念的一个很好的介绍。

一旦有了可行的设计,就可以开始阅读MSDN杂志档案(link)中“并发”主题中的文章,尤其是Jeff Richter编写的任何内容。这些将为您提供特定于Windows和.NET的线程构造的基本内容。 (Richter的“CLR via C#(Amazon)中的多线程部分很简短,但非常有见地 - 强烈推荐。”

答案 1 :(得分:5)

.NET有一些并行扩展,目前正在测试,可在Microsoft Parallel Computing Developer Center上获得。他们有一些有趣的项目,比如Parallel foreach和LINQ的并行版本称为PLINQ。有关扩展程序的一些最佳信息位于Channel 9

答案 2 :(得分:1)

我认为我们还可以包含非特定于.NET的并行处理方法,如果这些方法是最好的选择。

答案 3 :(得分:1)

@Larsenal

如果你想在.NET之外进行分支,那么就会有很多关于英特尔Threading Building Blocks的讨论,这是一个用于C ++的并行库。

答案 4 :(得分:0)

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

一些建议是: