【发布时间】:2017-08-18 10:28:56
【问题描述】:
开始学习多线程。有 3 种方法来计算数组平方根的和、平均值和乘积。
首先,我使用 PLINQ 进行了三个单独的阻塞调用。然后我认为能够在一次调用中完成它并同时返回一个包含总和、乘积和平均值的对象会很好。我读到 ParallelEnumerable.Aggregate 可以帮助我解决这个问题,但我完全不知道如何使用它。
如果我能解释一下如何在我的情况下使用此功能,我将非常感谢,以及这种方法的好/坏方面。
public static double Average(double[] array, string tool)
{
if (array == null) throw new ArgumentNullException(nameof(array));
double sum = Enumerable.Sum(array);
double result = sum / array.Length;
Print(tool, result);
return result;
}
public static double Sum(double[] array, string tool)
{
if (array == null) throw new ArgumentNullException(nameof(array));
double sum = Enumerable.Sum(array);
Print(tool, sum);
return sum;
}
public static void ProductOfSquareRoots(double[] array, string tool)
{
if (array == null) throw new ArgumentNullException(nameof(array));
double result = 1;
foreach (var number in array)
{
result = result * Math.Sqrt(number);
}
Print(tool, result);
}
【问题讨论】:
标签: c# .net multithreading parallel-processing plinq