使用c#中的并行编程将一个对象类型转换为另一个

时间:2016-05-06 05:35:36

标签: asp.net-mvc-4 task-parallel-library .net-framework-version

我想将一个对象(B)转换为另一个对象(A)类型,并根据与对象B无关的某些预定义条件,使用某些值填充A的某些属性。 我使用了Convert-all方法。有用。但是,我的问题是如何使用并行编程,或者使用并行for-each转换是否有意义。 除了聚合或计算之外,在Asp.net MVC 4应用程序的情况下,我们可以采用并行编程的所有实时场景。

2 个答案:

答案 0 :(得分:0)

您是要解决问题还是正在寻找使用并行编程的方法?如果你有很多CPU绑定工作要做,使用Parallel.ForEach例如可以帮助。如果主要是IO绑定工作,请尽可能使用async / await。

有关并行性的更多信息,请参阅Should I always use Parallel.Foreach because more threads MUST speed up everything?

使用并行和/或多线程需要付出代价并增加复杂性。在对象转换的情况下,不要使用TPL过度复杂化,请明智地使用它。

答案 1 :(得分:0)

ConvertAll()等效的最接近的并行是Parallel LINQ:

var as = bs.AsParallel().Select(b => ConvertBToA(b)).ToList();

请注意,即使您的代码可并行化,使其并行运行也不会提高性能,因为并行化会产生一些开销。这意味着只有在执行上述ConvertBToA方法需要相当长的时间时,上述代码才有意义。

对于ASP.NET尤其如此,因为您通常会有许多请求并行运行,因此使用多个CPU内核加速一个请求也会降低其他请求的速度。

  

在Asp.net MVC 4应用程序的情况下,我们可以用于并行编程的所有实时场景

我认为这个问题对于Stack Overflow而言过于宽泛。