我有一台四核PC。
我曾使用任务并行库以编程方式考虑过多核处理。但是,当我用Google搜索示例时,我被告知CPU会自动处理这个问题,最好不要管它。
现在,我发现另一篇文章在Code Project上赞扬了这个图书馆。
使用这个库有什么好处吗?
感谢
答案 0 :(得分:2)
除非您的应用程序主动利用并行处理,否则操作系统和CPU都不会自动为您执行此操作。操作系统和CPU可以在多个内核之间切换应用程序的执行,但这并不会使它在不同的内核上同时执行。为此,您需要使您的应用程序能够并行执行至少部分。
根据MSDN Parallel Processing and Concurrency in the .NET Framework,基本上有三种方法可以在.NET中进行并行处理:
Task Parallel Library
和PLINQ
都是其中的一部分。使用TPL的原因包括它和根据MSDN文章
的附带工具简化并行开发,以便您可以用自然语言编写高效,细粒度和可伸缩的并行代码,而无需直接使用线程或线程池。
Threads vs. Tasks对线程和TPL之间的决定有一些帮助 得出结论:
最重要的是,任务几乎总是最佳选择;它提供了更强大的API,避免浪费操作系统线程。
在现代代码中显式创建自己的线程的唯一原因是设置每线程选项,或维护需要维护自己身份的持久线程。
答案 1 :(得分:2)
任务并行库通过Task Schedulers执行其操作。您可以将TPL配置为它使用的调度程序。您可以编写自定义任务调度程序,它可以为一个任务创建一个线程。这样,您可以拥有管理线程的配置优势。类似于使用依赖注入框架优于DIY-DI的优势。
并且在任务和线程
之间存在许多SO条目