我想使用 TPL 将每次传递将迭代器增加 2 的 for 循环转换为并行 For 循环。数据不依赖于顺序或以任何方式受到限制,但我只想处理源数组的每个其他元素中的数据(即下面代码中的 _Datalist ),因此需要增加 2。
我的 For 循环:
for (int i = 1; i < _DataList.Length - 1; i += 2)
{
// Do work for _DataList[i]
}
是否可以告诉并行循环我想将 i 加 2 而不是 1?
这是并行循环,但显然 i 每次迭代仅增加 1:
Task.Factory.StartNew(() =>
Parallel.For(1, _DataList.Length, i =>
{
// do work for _DataList[i]
})
);
我可以告诉内部循环体忽略 i 的奇数值,但这似乎有点混乱 - 有没有办法在循环初始化中以某种方式做到这一点?
您可以将步数减半并将索引加倍:
Parallel.For(0, _DataList.Length / 2, i =>
{
// do work for _DataList[2 * i]
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)