【问题标题】:What are the current best options for parallelizing a CPU-intensive .NET app? [closed]并行化 CPU 密集型 .NET 应用程序的当前最佳选择是什么? [关闭]
【发布时间】:2010-09-05 07:24:42
【问题描述】:

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

【问题讨论】:

  • 什么硬件?如果它是 CPU 密集型的,并且您只有 1 个单核 CPU,那么多线程会降低性能。此外,如果您需要并行处理一组 PC,这与一台 PC 上的多线程是完全不同的。

标签: .net parallel-processing


【解决方案1】:

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

一些建议是:

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      @Larsenal

      如果您想在 .NET 之外分支,已经有很多关于英特尔的 Threading Building Blocks 的讨论,它是 C++ 的并行库。

      【讨论】:

        【解决方案4】:

        我认为我们还可以将非 .NET 特定的并行处理方法包括在内,如果这些方法是要考虑的最佳选择的话。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2015-04-24
            • 1970-01-01
            • 2010-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多