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、.NET4.6の場合は512です。

最大同時実行制限をそれを超えて明示的に上げる(またはそれより低くする)ことができます。これにより、PLinqは1から<limit>スレッドを使用して作業を行うことができます。通常、デフォルトを上げることは、作業がI/Oバウンドに強い場合にのみ役立ちます。

つまり、たとえばWithDegreeOfParallelismを使用してデフォルトの同時実行制限を変更しない限り、タスクは単一コア上の単一スレッドを使用して実行されます。

于 2012-08-12T06:39:54.157 に答える