gpt4 book ai didi

c# - 并行计算多个值。等待所有线程完成

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:28 24 4
gpt4 key购买 nike

在 C# 中执行以下操作的惯用且最快的方法是什么?假设我有一个具有三个值的类(它始终是三个值,因此可以预分配 3 个任务):

public class AggregateValues
{
public double A { get; set;}
public double B { get; set;}
public double C { get; set;}
}

public AggregateValues Compute()
{
//How do I parallize these?
AggregateValues av = new AggregateValues();
av.A = ComputeA();
av.B = ComputeB();
av.C = ComputeC();

//Wait for ComputeA, ComputeB, ComputeC to be done

return av;
}

public double ComputeA()
{
// Complicated code
}

public double ComputeB()
{
// Complicated code
}

public double ComputeC()
{
// Complicated code
}

最佳答案

你可以使用 Task.WaitAll等待所有任务完成的方法。下面提供了针对您的案例的简单解决方案。

public AggregateValues Compute()
{
//How do I parallize these?
AggregateValues av = new AggregateValues();

Task taskA = Task.Factory.StartNew(() => av.A = ComputeA());
Task taskB = Task.Factory.StartNew(() => av.B = ComputeB());
Task taskC = Task.Factory.StartNew(() => av.C = ComputeC());

//Wait for ComputeA, ComputeB, ComputeC to be done
Task.WaitAll(taskA, taskB, taskC);

return av;
}

等待Task.WhenAll也可用于等待所有任务完成。

关于c# - 并行计算多个值。等待所有线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com