我正在尝试在一个名为 Grasshopper(Rhino3D 的一部分)的包中使用 C#.net 优化一些数学运算。该操作非常简单,但必须执行的列表很大并且可能会变得更大。
我在我的 C# 脚本中使用 Parallel.ForEach 和列表,我得到的最终结果数量低于预期。这很可能是因为 list.add 不是线程安全的(或者在我构建它的软件中不是线程安全的)。
private void RunScript(double z, int x, List<double> y, ref object A)
{
List<double> temp = new List<double>();
double r;
System.Threading.Tasks.Parallel.ForEach(y, numb =>
{
r = Math.Pow((numb * x), z);
temp.Add(r);
});
A = temp;
请帮助我找出一种简单有效的方法,使用 CPU 多线程(或者如果您对 GPU CUDA 有建议)在数百个值上运行这个简单的数学运算。
我希望这个晦涩难懂的特定软件不会打扰您,因为据我所知,它的性能与普通 C#.Net/Python/VB.Net 相同。