如何为条件运行Parallel.For循环

时间:2014-02-21 09:18:34

标签: c# loops for-loop parallel-processing conditional-statements

我是C#中并行编程的新手,我发现很难实时实现。这是我的疑问:

public string[] SequentialFun(int count)
{
    string[] results = new string[count];
    for(int run = 0; run < count; run++)
    {
        while(true)
        {
           //Generate a Random Number (62 bit) and store it in variable 'randNum'
           if(randNum is prime)
           {
               results[run] = randNum.ToString();
               break;
           }
        }
    }
    return results;
}   
  1. 如何对上述函数应用并行编程来提高速度?
  2. 告诉我如何运行Parallel.For循环直到某个条件? 请解释并帮助我详细解释。

2 个答案:

答案 0 :(得分:0)

只需更换顺序循环:

for (int run = 0; run < count; run++)
{
    // ...
}

......并行:

Parallel.For(0, count, run =>
{
    // ...
});

答案 1 :(得分:0)

您应该使用Parallel.For方法并将您的逻辑放在匿名委托中:

Parallel.For(0, count, (i, results) =>
    {
       while(true)
       {
          //Generate a Random Number (62 bit) and store it in variable 'randNum'
          if(randNum is prime)
          {
              results[run] = randNum.ToString();
              break;
          }
       }
    }
);

请记住,使用Parallel.For并不意味着代码执行的效率会提高x倍,因为它取决于处理器核心的数量。