【发布时间】:2017-06-07 17:55:31
【问题描述】:
我写了一段代码,如下所示:
var allParams = new List<string>(); // supposingly has 10 items inside it
var secondCollection = new List<string>(); // collection of 100
Parallel.For(0, secondCollection.Count(), new ParallelOptions {
MaxDegreeOfParallelism = 10 }, counter =>
{
callingSomeMethod(params[counter]);
});
我正在尝试找出最佳方法,如何将我的 params 集合与并行 for 循环结合起来,以制作如下所示的内容:
- 当 10 个线程同时启动时,我想在 callSomeMethod 方法中传递所有 10 个元素,当其中一个线程结束时,我想只是简单地重新开始在位置 0 传递元素, 1, 2, 3,4,5,6,7,8,9,0,1,2,3...
因此循环会不断重复,直到 Parallel.For 循环结束它的循环...
并行循环是否可行?我不确定我将如何实现这一点,有人可以帮助我吗?
【问题讨论】:
-
你试过了吗?您遇到了哪些错误/问题?
-
@Kyle 不,我实际上什至不知道如何开始它,它仍然在我的脑海中“模糊”,这就是为什么我开始讨论它是否可行
-
试试吧。它可能会起作用。顺便说一句,我想你的意思是
counter % allParams.Length。按原样传递counter将导致您得到ArgumentOutOfRange异常。 -
MaxDegreeOfParallelism不保证会使用 10 个线程。只有 10 个是最大值。 -
@PeterBons 一次使用多少个线程并不重要,只是当 1 个线程被释放时,使用 allParams 中的下一个可用字符串
标签: c# asp.net asp.net-mvc multithreading parallel-processing