我想在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。
答案 0 :(得分:4)
是否需要线程?
是的,确实如此。
您可以使用TPL中的并行for
循环implementation:
Parallel.For(0, (int)Math.Pow(10, 8),
i =>
{
// do some computation
});
当然,如果数组中每个项目的值可以与其他项目分开计算,则此解决方案适用。
答案 1 :(得分:1)