自从Microsoft首次宣布它以来,我一直非常关注.NET Task Parallel Library(TPL)的开发。

毫无疑问,我们最终将利用TPL。我要问的是在发布Visual Studio 2010和.NET 4.0时开始使用TPL是否有意义,或者等待一会儿是否有意义。

为什么现在开始?

  • .NET 4.0任务并行库的设计似乎不错,并且一些相对简单的测试表明它可以在当今的多核CPU上很好地工作。
  • 自大约七年前购买我的第一台四核处理器Dell Poweredge 6400以来,我一直对使用多个轻量级线程来加速我们的软件的潜在优势非常感兴趣。当时的实验表明,这样做是不值得的,我将其主要归因于在每个CPU的缓存(那时没有共享缓存)和RAM之间移动数据的开销。
  • 竞争优势-我们的一些客户永远无法获得足够的性能,毫无疑问,我们今天可以使用TPL制造出更快的产品。
  • 听起来很有趣。是的,我意识到有些开发人员宁愿用尖锐的棍子戳自己,但我们确实享受最大化的性能。

  • 干嘛要等?
  • 随着多核支持的日趋成熟,今天的英特尔Nehalem CPU是否代表了我们的发展方向?您现在可以购买具有4个内核的Nehalem CPU,它们共享一个3级缓存,而在Visual Studio 2010/.NET 4.0发布时,很可能有一个6核CPU共享一个3级缓存。显然,核心数量会随着时间的推移而增加,但是架构又如何呢?随着内核数量的增加,它们仍将共享缓存吗? Nehalem的一个问题是,即使内核之间的互连速度非常快,它们也具有非均匀的内存访问(NUMA),这可能导致性能降低和结果的可预测性降低。 future 的多核体系结构是否可以淘汰NUMA?
  • 同样,.NET任务并行库是否会随着成熟而发生变化,需要对代码进行修改以充分利用它?

  • 局限性
  • 我们的核心引擎是100%C#,并且必须在没有完全信任的情况下运行,因此我们仅限于使用.NET API。
  • 最佳答案

    我现在开始。我强烈怀疑我们已经看到了大部分更改-即使候选版本中有一些调整,但我相信它们会在PFX team blog中得到很好的记录,并且易于更改。即使芯片发生了变化,我也希望TPL能够在将来的版本中进行调整-我个人希望当前的TPL在处理这些新芯片方面仍然比任何手工制作的线程代码凡人(例如凡人)做得更好。我们可以写。

    我现在要开始的一个真正的缺点是学习资源还没有真正存在。有一些文档说明,一些博客文章(其中一些现在已经过时)和一些示例代码-但没有专门针对PFX的书籍。我相信这些会及时到来的-如果您在游戏初期,甚至可以写一个:)

    根据您的应用程序,您可能还需要查看Reactive Extensions,它与PFX协同工作。

    关于c# - 现在开始为任务并行库设计还为时过早吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2156605/

    10-11 02:13