.net 并行代码中的并行
一旦我将任务划分为4个独立的任务,并使它们并行运行。.net 并行代码中的并行,.net,parallel-processing,task-parallel-library,vb.net-2010,.net,Parallel Processing,Task Parallel Library,Vb.net 2010,一旦我将任务划分为4个独立的任务,并使它们并行运行。 是否可以进一步使每个任务并行运行?(也就是说,每个任务,每个循环都有很多可实现的并行代码)您当然可以,但它是 不过,你必须考虑多个因素 迭代的大小是多少(越多越好) 您的CPU可以处理多少并发线程 处理器中的内核数量 Parallel.For(0, length1, i => { Parallel.For(0, length2, j => { Console.WriteLin
是否可以进一步使每个任务并行运行?(也就是说,每个任务,每个循环都有很多可实现的并行代码)您当然可以,但它是 不过,你必须考虑多个因素
- 迭代的大小是多少(越多越好)
- 您的CPU可以处理多少并发线程
- 处理器中的内核数量
Parallel.For(0, length1, i => { Parallel.For(0, length2, j => { Console.WriteLine(i * j); }); });
我通常取线程数=核心数,因为我认为每个核心一次可以处理一个线程。我显然错了。(你的意思是“摊销”,而不是“稀释”)。如果Foo(I,j)提供的工作大小不均。然后您希望您的程序最大限度地识别并行机会,并让编译器/运行时系统选择在实际处理器上并行运行的程序。要使其工作,您必须有偷功调度程序。如果C#有,则不知道。
Parallel.For (0, 100, i =>
{
Parallel.For (0, 50, j => Foo (i, j)); // Sequential would be better
});