9

誰かが私に1つのことを説明できますか. 私が理解しているように、 AsParallel() は独自のタスクで実行されます。したがって、クエリが大量のデータを返す場合、「foreach」が Console.WriteLine の実行を開始したときに、変数「d」が空になる可能性がありますか?

var integerList = Enumerable.Range(1, 100);
var d = from x in integerList.AsParallel()
where x <= 25
select x;
foreach (var v in d)
{
Console.WriteLine(v);
}
4

2 に答える 2

3

AsParallelPLINQ特徴です。 ローカルクエリをPLINQ自動的に並列化します。作業の分割と結果の照合の両方の負担をフレームワークにオフロードするという点で、使いやすいという利点があります。LINQPLINQ

を使用するにはPLINQ、単にAsParallel()入力シーケンスを呼び出してから、LINQ通常どおりクエリを続行します。

あなたdの場合の変数は、. 空の場合は、条件を満たす要素がコレクションにないことを意味します。PLINQx <= 25

詳細はこちら

于 2011-05-04T17:17:15.743 に答える
1

いいえ。.AsParallel() を追加すると、PLINQ は、従来のデータ並列評価手法を使用して、使用可能なすべてのプロセッサで Where、OrderBy、および Select を透過的に実行します。実際には、クエリは foreach ループで「触れる」までまったく実行されません (PLINQ は LINQ と同じように遅延実行を使用します)。メイン スレッドは、通常どおり、クエリの実行から戻るまで実行を停止します。

追加情報はこちら..

于 2011-05-04T17:21:41.090 に答える