使用两个cpu核心

时间:2014-03-04 10:31:22

标签: c# windows multithreading programming-languages

我想在for循环中做一些计算:

for (int i=0; i< Math.Pow(10,8) ;i++){
  //do some computation
}

但是当我运行时,它只使用我的一个cpu核心(我在任务管理器中看到我的程序使用了50%的cpu)。

我如何使用这两个核心?它需要线程吗?

并且如果它需要多线程,我不能打破循环,因为它填充数组并将其用作索引增量,那么解决方案是什么(如果需要线程化)。

例如在下面的代码中,我填充数组P作为i递增,我动态地使用数组。

void f(){/*do some computation*/}
double[] P;
for (int i=0; i< Math.Pow(10,8) ;i++){
   if (some conditions with index i and f and array P occurs )
      P[i]=f;

}

我的笔记本电脑是intel core 2 dou 2.2 GH。

2 个答案:

答案 0 :(得分:4)

  

是否需要线程?

是的,确实如此。 您可以使用TPL中的并行for循环implementation

        Parallel.For(0, (int)Math.Pow(10, 8),
            i =>
            {
                // do some computation
            });

当然,如果数组中每个项目的值可以与其他项目分开计算,则此解决方案适用。

答案 1 :(得分:1)