将For循环转换为Parallel.For循环

时间:2010-06-29 01:49:23

标签: c#-4.0

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;
                  }
             }

1 个答案:

答案 0 :(得分:2)

鉴于你的for循环似乎使用了依赖于排序的循环体,它很可能不是并行化的候选者。

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

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

相关问题