2

据我所理解:

利用多核或多处理器的编程称为并行编程。

但是如果我没有>1 个核心呢?

执行如下命令:

"abcdef".AsParallel().Select(c=>char.ToUpper(c)).ToArray()

将按顺序运行?

(我知道即使我有 >1 个核心,Plinq 优化仍然可以选择并行。但我的问题是关于拥有 ==1 个核心。)

或者

它仍然可以在多个线程(1个核心)中,例如:

在此处输入图像描述

(但恕我直言,它不会是并行编程)

我有点困惑。任何帮助将不胜感激。

4

1 回答 1

5

PLinq 将默认允许的并行度为 Math.Min(ProcessorCount, MAX_SUPPORTED_DOP) 其中 MAX_SUPPORTED_DOP 对于 .NET 4.0 为 64,对于 .NET 4.6 为 512

您可以显式地将最大并发限制提高到超出该限制(或将其降低到该限制以下),这使 PLinq 可以自由地使用 1 到 <limit> 个线程来完成您的工作。通常提高默认值仅在您的工作受大量 I/O 限制时才有用。

换句话说,除非您使用例如WithDegreeOfParallelism更改默认并发限制,否则您的任务将使用单个内核上的单个线程运行。

于 2012-08-12T06:39:54.157 回答