Art*_*aru 28 .net c# multithreading .net-4.0
我听说.NET 4团队在框架中添加了新类,使得线程更好,更容易.
基本上问题是运行.NET 4中添加的多线程任务的新方法是什么?它们设计用于什么?
UPD:只是要清楚,我不是在寻找一个 .NET 4的并行运行任务的方式,我想找出所有的新的增加,有可能的话什么情况下会每个人最适合对于..
Art*_*aru 36
由于缺乏响应,我决定用以下答案评估下面的答案.正如@Scott所说,.NET 4增加了任务并行库,它为并行性添加了许多创新,新方法和方法.
Parallel.For和Parallel.ForEach方法,它们允许开发人员在多个线程中处理多个项目.在这种情况下,框架将决定需要多少线程,何时创建新线程,何时不需要..Where子句过滤对象列表,例如,现在将在多个线程中运行!Task课程.在某些方面,它可能看起来像已经众所周知的Thread类,但它利用了.NET 4中的新线程池(与以前的版本相比已经有了很大的改进),并且比常规Thread类功能更强大.例如,您可以链接任务,其中链中间的任务仅在前一个任务完成时才开始.第9频道的截屏视频中的示例和深入解释BlockingCollection<>.这在您拥有生产者 - 消费者场景的情况下非常有效.您可以让多个线程生成一些对象,然后由使用者方法使用和处理.这可以通过Task工厂和阻塞集合轻松地进行并行化和控制.使用第9频道的示例进行有用的截屏.CountdownEvent类,它可以帮助我们完成"任务协调场景"(c).基本上允许我们等到所有并行任务完成.在第9频道上使用示例用法的截屏视频您可以在频道9上看到许多标有"并行计算"的截屏视频和视频
Sco*_*man 15
是的,.NET 4添加了Task Parallel Library ,它在更高层次上增加了对以下内容的支持:
Parallel.For和运行并行循环Parallel.ForEachParallel.Invoke或Task类创建或运行任务回答原始问题的更新......
TPL是使用.NET 4编写并行任务的首选方法.您仍然可以自己创建线程池项目,并执行以前所有相同的"手动"线程技术.需要记住的是,整个线程池(以及与线程相关的几乎所有内容)都已被重写以利用TPL.这意味着即使您自己创建了一个线程池项目,您仍然最终会使用TPL,即使您不知道它.另外要记住的是TPL更加优化,并且可以根据可用处理器的数量进行更适当的扩展.
至于知道他们每个人最适合的情况,没有"银弹"答案.如果您之前正在排队自己的线程池项(或以其他方式执行多线程),您可以修改代码的这一部分以使用TPL而不会产生任何后果.
对于并行循环或并行查询之类的东西,您需要分析代码和该代码的执行情况,以确定是否适合并行化.
| 归档时间: |
|
| 查看次数: |
24779 次 |
| 最近记录: |