【发布时间】:2019-02-18 03:19:11
【问题描述】:
这是我第一次尝试使用“Parallel.ForEach”循环来查看是否可以使用系统中的多个内核来提高性能。我曾尝试查看 MSDN 和其他示例,但找不到传递以下 3 个列表的方法。
如何将此循环与 Parallel.ForEach 循环交换? 我想我正在寻找如何传递所有这 3 个列表的基础知识,以便我可以在 Parallel.ForEach 循环中使用它们?
谢谢!
List<double> nums = new List<double> { 0.0005, 0.00035, 0.00205 };
List<double> list1 = new List<double>();
List<double> list2 = new List<double>();
List<double> list3 = new List<double>(); Random random = new Random(); double calc1 = 0;
List<double> resultLIST = new List<double>();
for (int i = 0; i < 4000000; i++)
{
list1.Add(nums[random.Next(0, 7)]);
list2.Add(nums[random.Next(0, 7)]);
list3.Add(nums[random.Next(0, 7)]);
}
//How can the below loop be replaced with a: Parallel.ForEach loop?
for (int i = 0; i < list1.Count; i++)
{
calc1 = list1[i] * list2[i] * list3[i];
resultLIST.Add(calc1);
}
//Now sort the list
resultLIST.Sort();
//Here I will write "resultLIST" to a .txt file
【问题讨论】:
-
不清楚你在问什么。我们不知道
list2或`list3` 代表什么,或者你打算用它们做什么。如果您只想将一个列表标记到前一个列表的末尾,那么您可以使用list1.Concat(list2).Concat(list3)。 -
这听起来像是XY-problem。您真正想要完成什么?
-
附带说明,您的第一行可以替换为
List<double> nums = new List<double> { 0.0005, 0.00035, 0.00205 }; -
这是非常低质量的,请解释你想用这个做什么,为什么。就目前而言,这里没有问题,只是一个思想泡泡
-
如果我的问题令人困惑,我很抱歉。这是我第一次使用这个 Parallel.ForEach 循环,所以我不确定在放置代码时是否遗漏了什么。如果这样更清楚,我已经更改了问题?
标签: c# multicore parallel.foreach