有没有必要使用任务并行库

时间:2015-07-13 10:49:55

标签: c# task-parallel-library

我有一台四核PC。

我曾使用任务并行库以编程方式考虑过多核处理。但是,当我用Google搜索示例时,我被告知CPU会自动处理这个问题,最好不要管它。

现在,我发现另一篇文章在Code Project上赞扬了这个图书馆。

使用这个库有什么好处吗?

感谢

2 个答案:

答案 0 :(得分:2)

除非您的应用程序主动利用并行处理,否则操作系统和CPU都不会自动为您执行此操作。操作系统和CPU可以在多个内核之间切换应用程序的执行,但这并不会使它在不同的内核上同时执行。为此,您需要使您的应用程序能够并行执行至少部分。

根据MSDN Parallel Processing and Concurrency in the .NET Framework,基本上有三种方法可以在.NET中进行并行处理:

  1. 您自己处理线程及其同步的托管线程。
  2. 各种异步编程模式。
  3. .NET Framework中的并行编程,其中Task Parallel LibraryPLINQ都是其中的一部分。
  4. 使用TPL的原因包括它和根据MSDN文章

    的附带工具
      

    简化并行开发,以便您可以用自然语言编写高效,细粒度和可伸缩的并行代码,而无需直接使用线程或线程池。

    Threads vs. Tasks对线程和TPL之间的决定有一些帮助  得出结论:

      

    最重要的是,任务几乎总是最佳选择;它提供了更强大的API,避免浪费操作系统线程。

         

    在现代代码中显式创建自己的线程的唯一原因是设置每线程选项,或维护需要维护自己身份的持久线程。

答案 1 :(得分:2)

任务并行库通过Task Schedulers执行其操作。您可以将TPL配置为它使用的调度程序。您可以编写自定义任务调度程序,它可以为一个任务创建一个线程。这样,您可以拥有管理线程的配置优势。类似于使用依赖注入框架优于DIY-DI的优势。

并且在任务和线程

之间存在许多SO条目
  1. Task vs Thread
  2. Task vs Thread
  3. Multithreading or TPL