// parameters.Count == 10
// actualFreeLicenses == 2
Parallel.For(0, parameters.Count, new ParallelOptions()
{
MaxDegreeOfParallelism = actualFreeLicenses
}, i =>
{
ExternalProgram(i);
}
);
当我执行上面的代码时,我注意到传递给 ExternalProgram
方法的 i
的值是 1 & 6,后来是 2 & 7,后来是 3 & 8。 ..
如果我有 14 个参数和 2 个许可证,它总是启动 1 和 8,然后是 2 和 9 ...
是否可以定义顺序:首先是 1 和 2,然后是 3 和 4 等等?
最佳答案
在并行循环体中使用 Queue/ConcurrentQueue 和出队项目怎么样?这将确保保留顺序。
关于c# - 是否可以在 Parallel.For 中定义执行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595503/