并行编程模式;选择哪种模式!?

时间:2012-03-20 16:24:18

标签: .net-4.0 parallel-processing

参考电子书patterns for parallel programming。 我阅读了电子书,学到了很多新东西。但我想知道选择哪种模式。

例如并行类,任务类,PLINQ,ThreadPool类,......

是否有任何资源可以提供有关.net 4中并行编程的更多信息?

3 个答案:

答案 0 :(得分:1)

针对不同类型的应用设计了不同的模式。

任务类:当你想要执行的并行作业彼此独立时,&完成顺序无关紧要。这些工作可能规模不规则。例如。制造汽车。无论哪个部件(轮胎,发动机,门等)按顺序生产都无关紧要。您只关心最终制造的汽车,并且您正在并行完成,以便尽快完成。

并行类:此类型适用于独立且类似但任务大小几乎相同的任务。例如:迭代独立的简单for循环。

Threadpool类:这有点是上述两者的组合,除了可以由开发人员管理的线程之间存在某种级别的依赖关系(例如:通过按某种顺序执行线程或根据结果执行线程) /从其他线程获得的条件等。)

请注意,并行模式的选择并非完全属于您!大多数时候,一个人被迫根据正在实施的应用程序类型选择一个或另一个。

答案 1 :(得分:1)

任务和并行不是模式,它们是类或命名空间。这些类可用于实现各种常见的并行模式。在某些情况下,只需要一个类来完成此操作,例如与Parallel.ForEach的数据并行。在其他类中,必须使用不同的类来开发解决方案,例如使用Tasks和BlockingCollection实现管道。

ThreadPool实际上可以被认为是构建.NET 4中的任务并行库的实现细节。任务代表线程池的抽象,允许开发人员将工作指定为任务,并让.NET运行时处理以独立于硬件和可扩展的方式尽可能高效地调度工作。

本书中讨论的模式并不适用于应用程序级别,它们更像是Gang of Four描述的设计模式。通常,应用程序由许多使用许多不同模式的代码行组成。例如,图像处理应用程序可能使用模型 - 视图 - 控制器模式来分离视图(GUI)和模型的关注点。模型本身可能使用管道和数据并行。您可以在本书的pipelines chapter中看到这样的示例。

答案 2 :(得分:0)

MSDN中有一个官方文档解释并行模式和部分(选择正确的模式)。