对于Parallel.for中的循环

时间:2014-10-01 10:42:57

标签: c# multithreading for-loop parallel.for

从昨天开始大量的谷歌搜索后,我发布了这个问题

我正在进行多线程处理,我正在使用Parrallel.For,我想知道我们如何在Parrallel.for中使用for循环。据我所知,这不是最好的做法,但现在我必须做我的RND工作

     int dataPerBatch = 100;
ParallelLoopResult result = Parallel.For(0, totalLoops, (i) => UpdateRecords(i, lstVins));

 public void UpdateRecords(int i, List<string> lst)
    {

      start = (i * dataPerBatch) + 1;
      end = dataPerBatch * (i + 1);
     //Inner For Loop 
     for (int j = start; j <= end; j++)
        {
            // Call individual list object to web-api and fetch the result in new list object

            // Here the start and end value keep on chahnging
        }

       //  Call this collection again to the web- api and do bulk update
  }

但问题是内部for循环不等待,它与多线程值重叠(当parrallel.for迭代时)我尝试使用锁但没有用。

请注意:我没有粘贴整个代码,只粘贴了骨架

1 个答案:

答案 0 :(得分:1)

您已在方法外声明变量startend,因此所有线程将共享相同的变量。使它们成为方法的本地,以便线程拥有自己的变量集:

int start = (i * dataPerBatch) + 1;
int end = dataPerBatch * (i + 1);