C#的并行编程模式?

19
随着英特尔推出了一款六核(6)台式机处理器,看起来我们不能再等微软让多核编程变得“容易”了。我刚刚订购了Joe Duffy的书《并发编程在Windows上》。这似乎是一个很好的起点,但我希望你们中一些针对多核系统的开发者能指点一些对你们的项目有用的资源?
您提供了一些很好的答案,但是,让我解释一下我所谓的“好资源”。只因为我们拥有6,12或48个内核,并不意味着我们的应用程序会受益于尝试使用它们。我一直听说当前的编程范式将在我们的系统中拥有大量内核时发生变化。
我应该阅读哪些博客/书籍才能最好地理解这些模式以及何时使用它们。是否有任何有用的播客或网络广播可以帮助?
以下是我发现有趣的一些链接:

通用工具:

多线程:

  • Joe Albahari的C#中的线程
  • Jon Skeet的.Net中的多线程

  • 我们将在下周与样例一起在CodePlex上发布上述p&p书籍的前几章草稿。http://parallelpatterns.codeplex.com/欢迎反馈我们所做的工作,请随意查看。谢谢,Ade - Ade Miller
    @Ade:我相信我们都在热切地等待下一份草案,并且一定会提供反馈。感谢您让我们保持最新状态。 - VoidDweller
    我们刚刚在Codeplex上发布了前言和第1、2和5章的草稿,网址为http://parallelpatterns.codeplex.com/。如果您有时间,我们希望听到您的反馈意见。 - Ade Miller
    我们的书已经发货。您可以在MSDN上阅读它,或者从O'Reilly购买电子书或印刷版。http://parallelpatterns.codeplex.com/ - Ade Miller
    5个回答

    13

    以下是一些选项

    • F# 很好地支持并发代码
    • .NET 4 中的 Parallel LINQ 和 Tasks 是有用的抽象。

    请参阅pfxteam 博客了解有关 .NET 4 中新的并行编程工具的其他信息。


    很难超越pfxteam博客。你知道有哪些特定于C# 3.0的资源吗? - VoidDweller
    我本来想说Joe Albahari和Jon Skeet,但你已经在问题中列出了他们的帖子 :) - Brian Rasmussen

    8
    这是一篇由Reed Copsey撰写的非常全面详尽的文章系列,链接为:http://reedcopsey.com/series/parallelism-in-net4/。该系列文章从基本的并行编程原理开始,介绍了如何使用.NET4中的新任务并行库实现解决方案。

    我已经开始阅读这些文章,这似乎是我们应该考虑的事情。 - VoidDweller
    @rwwilden:感谢你的推荐。我想补充一下,这还是一个正在进行中的项目——还有很多内容即将到来。目前我们只是开始了任务并行处理,不过数据并行处理已经相当成熟了。 - Reed Copsey

    5

    我一有机会就会阅读这个。看起来不错,似乎涵盖了当前的技术水平以及即将发布的 .Net 4 新增内容。 - VoidDweller

    4

    请记住,在所有这一切中,你编写的每个应用程序并不一定都能从并行编程中受益。操作系统已经能够将不同的进程投入到不同的核心中,这意味着您的单线程应用程序已经从事实中受益了,因为它不必与许多其他线程和进程共享核心。


    这是一个非常好的观点,Spencer,也是我提出这个问题的主要动机。我已经编辑了我的问题以反映这一点。 - VoidDweller

    2

    我同意Brian和rwwilden的观点,使用任务并行库(Task Parallel Library)是明智的选择。虽然TPL是.NET 4的功能,但如果您的目标是3.5,则可以在.NET响应式扩展(Rx)中作为一部分进行使用。


    Rx看起来非常吸引人,我喜欢它可以与3.5 sp1一起使用。我会研究一下它,不知道它是否可以与我们的应用程序捆绑在一起,还是必须要安装。 - VoidDweller
    它可以与您的应用程序捆绑在一起,但请检查Go Live许可条款。 - Richard Anthony Freeman-Hein

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接