是否可以在Parallel.For中定义执行顺序?

Sai*_*int 4 c# multithreading synchronization .net-4.0 parallel-for

// parameters.Count == 10
// actualFreeLicenses == 2
Parallel.For(0, parameters.Count, new ParallelOptions() 
                    {
                        MaxDegreeOfParallelism = actualFreeLicenses
                    }, i =>
                    {
                        ExternalProgram(i);
                    }
);
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,我注意到i传递给ExternalProgram方法的值是1和6,后来的2和7,后来的3和8 ......

如果我有14个参数和2个许可证,它总是启动1和8,后来的2和9 ......

是否可以定义顺序:首先是1和2,后来是3和4等​​?

spe*_*der 10

如何使用Queue/ConcurrentQueue并在并行循环体中出列项?这将确保保留订购.


obe*_*eak 4

如果您使用的是并行执行它们的顺序与"并行"无关.如果订单与您相关,则应使用顺序工作流程.