ChangingtheIncrementofC#Parallel.ForLoop我想将一个使用TPL的for循环转换为每次传递迭代器递增2并行For循环。数据不依赖于顺序或以任何方式受到约束,但我只想处理源数组(下面代码中的_Datalist)的每个其他元素中的数据,因此需要递增2。我的For循环:for(inti=1;i<_DataList.Length-1;i+=2){//Doworkfor_DataList[i]}是否可以告诉并行循环我想递增2而不是1?这是并行循环,但显然我每次迭代只增加1:Task.Factory.StartNew(()=>Parallel.For(1,_DataList.Length,i=>{//doworkfor_DataList[i]}));我可以告诉内部循环体忽略i的奇数值,但这看起来很麻烦——有没有办法在循环初始化中以某种方式做到这一点?怎么样:varodds=Enumerable.Range(1,_DataList.Length).Where(i=>i%2!=0);Task.Factory.StartNew(()=>Parallel.ForEach(odds,i=>{//为_DataList[i]工作}));您可以将步数减半并将索引加倍:Parallel.For(0,_DataList.Length/2,i=>{//doworkfor_DataList[2*i]});DarinDimitrov的回答显示了实现此目的的简单方法。然而,这并没有被添加,因为它通常表明循环体并没有真正不同。在大多数情况下,需要使用不同的delta值通常只是需要按特定顺序处理或导致并行化产生竞争条件的其他问题。甚至跳过值。以上就是C#学习教程的全部内容:改变C#Parallel.For循环的增量值。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——Task.Factory.StartNew(()=>Parallel.For(1,_DataList.Length,i=>{if(i%2==0){//为}})工作);点击右侧联系管理员删除。如需转载请注明出处:
