C# TPL在多核处理器中的工作原理

C# TPL在多核处理器中的工作原理,c#,parallel-processing,task-parallel-library,C#,Parallel Processing,Task Parallel Library,我不熟悉C#4.0中的并行编程。我知道并行编程和多线程是两件不同的事情。现在在TPL中,如果我创建如下任务: Task<int> task1 = new Task<int>(() => { for (int i = 0; i < 100; i++) { sum += DoSomeHeavyCalculation(i); }

我不熟悉C#4.0中的并行编程。我知道并行编程和多线程是两件不同的事情。现在在TPL中,如果我创建如下任务:

 Task<int> task1 = new Task<int>(() => {
                for (int i = 0; i < 100; i++) {
                    sum += DoSomeHeavyCalculation(i);
                }
                return sum;
            });

            // start the task
            task1.Start();
Task task1=新任务(()=>{
对于(int i=0;i<100;i++){
总和+=剂量重计算(i);
}
回报金额;
});
//开始任务
task1.Start();

这将如何在core 2 duo处理器中工作。实际上,我正在试图弄清楚我的概念。

任务1的计算将在单个线程上执行,与您当前使用的线程不同。实际发生的情况取决于您发布的代码下面的代码

    >P>如果没有什么,在主方法中,任务可能会在中间停止。

  • 如果存在
    task1.Wait()
    或使用
    task1.Result
    的内容,则当前线程将等待任务完成,并且使用TPL不会带来任何性能好处

  • 如果还有其他一些繁重的计算,然后是前一点的计算,那么这两个计算将并行运行

如果要使用所有可用内核并行运行
for
循环,应使用或:

*事实上,在某些情况下,任务可以在同一个实际线程上运行,但这与此无关

ParallelEnumerable.Range(0, 100).Select(DoSomeHeavyCalculation).Sum()