Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用cpu的两个核心_C#_Windows_Multithreading_Programming Languages - Fatal编程技术网

C# 使用cpu的两个核心

C# 使用cpu的两个核心,c#,windows,multithreading,programming-languages,C#,Windows,Multithreading,Programming Languages,我想在for循环中进行一些计算: for (int i=0; i< Math.Pow(10,8) ;i++){ //do some computation } 但当我运行时,它只使用我的一个cpu核心,我在任务管理器中看到我的程序使用了50%的cpu 如何使用这两个核心?它需要穿线吗 如果它需要多线程,我不能中断循环,因为它会填充数组并将其用作索引增量,那么如果需要线程,那么解决方案是什么呢 例如,在下面的代码中,我按增量填充数组p,并动态使用该数组 void f(){/*do so

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

for (int i=0; i< Math.Pow(10,8) ;i++){
  //do some computation
}
但当我运行时,它只使用我的一个cpu核心,我在任务管理器中看到我的程序使用了50%的cpu

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

如果它需要多线程,我不能中断循环,因为它会填充数组并将其用作索引增量,那么如果需要线程,那么解决方案是什么呢

例如,在下面的代码中,我按增量填充数组p,并动态使用该数组

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

它需要穿线吗

是的。 您可以使用来自TPL的并行for循环:

        Parallel.For(0, (int)Math.Pow(10, 8),
            i =>
            {
                // do some computation
            });
当然,如果数组中每个项目的值都可以与其他项目分开计算,则此解决方案是适用的。

请查看:
你可以在网上找到大量的例子。

你能发布检查p内容的具体条件吗?假设我的算法是用来查找素数的,每次当我%p[j]找到素数时=到目前为止,所有j的0都保存在P[j+1]中。我知道素数测试有更好的算法。如果我理解正确,你不能并行计算。要查找素数,你绝对可以使用下面丹尼斯建议的并行for循环。为了进一步改进,我建议阅读它可能会给你一些提示。