【问题标题】:Convert For loop into Parallel.For loop将 For 循环转换为 Parallel.For 循环
【发布时间】:2010-06-29 01:49:22
【问题描述】:
public void DoSomething(byte[] array, byte[] array2, int start, int counter)
{

    int length = array.Length;
    int index = 0;

         while (count >= needleLen)
         {
             index = Array.IndexOf(array, array2[0], start, count - length + 1);

             int i = 0;
             int p = 0;

             for (i = 0, p = index; i < length; i++, p++)
             {
                  if (array[p] != array2[i])
                  {
                       break;
                  }
             }

【问题讨论】:

    标签: c#-4.0


    【解决方案1】:

    鉴于您的 for 循环似乎使用依赖于排序的循环体,它很可能不适合并行化。

    但是,您没有展示这里涉及的“工作”,因此很难说出它在做什么。由于循环同时依赖于 i 和 p,而且看起来它们会独立变化,因此不太可能使用简单的 Parallel.For 重写它,而无需重新设计或重新思考您的算法。

    为了使循环体成为并行化的良好候选者,它通常需要与顺序无关,并且没有顺序约束。您将循环基于两个自变量这一事实表明这些要求在此算法中无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-12
      • 2018-02-22
      • 2017-04-26
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      相关资源
      最近更新 更多