我有一台具有 8 GB 内存的 8 核 CPU 机器。从逻辑上讲,以下代码可以并行完成,但是由于循环提供了足够多的并行机会,因为可用的内核远少于循环的大小。其次,每个委托表达式都会分配一些内存来保存自由变量。在这种情况下是否建议使用并行?
在这种情况下,将 2 个并行 for 分成 2 个任务也会提高性能吗?
private static void DoWork()
{
int end1 = 100; // minimum of 100 values;
int end2 = 100; // minimum of 100 values;
Task a = Task.Factory.StartNew(
delegate
{
Parallel.For(0, end1, delegate(int i)
{
// independent work
});
}
);
Task b = Task.Factory.StartNew(
delegate
{
Parallel.For(0, end2, delegate(int i)
{
// independent work
});
}
);
a.Wait();
b.Wait();
}