C# TPL在多核处理器中的工作原理
我不熟悉C#4.0中的并行编程。我知道并行编程和多线程是两件不同的事情。现在在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); }
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的计算将在单个线程上执行,与您当前使用的线程不同。实际发生的情况取决于您发布的代码下面的代码
- 如果存在
或使用task1.Wait()
的内容,则当前线程将等待任务完成,并且使用TPL不会带来任何性能好处task1.Result
- 如果还有其他一些繁重的计算,然后是前一点的计算,那么这两个计算将并行运行
for
循环,应使用或:
*事实上,在某些情况下,任务可以在同一个实际线程上运行,但这与此无关
ParallelEnumerable.Range(0, 100).Select(DoSomeHeavyCalculation).Sum()