C# 转换代码以利用多核

C# 转换代码以利用多核,c#,C#,我有以下问题。转换以下代码以利用您的多核计算机: IEnumerable<double> numbers = GetNumbers(); var queue = new Queue<double>(); foreach (var number in numbers) { var computed = Compute(number); queue.Enqueue(computed); } 按照《辩证法》的建议,使用Parallel.ForEach,可以得到类似的结果

我有以下问题。转换以下代码以利用您的多核计算机:

IEnumerable<double> numbers = GetNumbers();
var queue = new Queue<double>();
foreach (var number in numbers)
{
 var computed = Compute(number);
 queue.Enqueue(computed);
}

按照《辩证法》的建议,使用Parallel.ForEach,可以得到类似的结果

public void PrrocessItems()
{
    IEnumerable<double> numbers = GetNumbers();
    var queue = new Queue<double>();

    Parallel.ForEach(numbers, item => ProcessItem(item, queue));
}

private void ProcessItem(double number, Queue<double> queue)
{
    var computed = Compute(number);
    queue.Enqueue(computed);
}
将集合分解为块,并基于可用的系统资源并行处理循环的多个迭代。您不需要自己管理任何线程工作。

用Parallel.foreach替换foreach。