Iコードを以下た:遅延評価
static IEnumerable<int> foo()
{
int den = 0;
yield return 10;
yield return 10;
yield return 10;
yield return 10/den;
yield return 10/den;
}
static public void Main()
{
foreach (var item in foo().AsParallel().Take(3))
{
Console.WriteLine(item);
}
Console.ReadLine();
}
このコードは失敗した(収集の実際に使用されていない要素が計算されるため、 - PLINQは、データのチャンクを計算します)。 .Netは本当の "遅延"並列化をサポートしていますか?(未使用要素のチャンクの事前計算なし)
注:これは単なる例に過ぎません。オーバーヘッドを避けるために大きなデータにはAsParallel
を使用する必要があります。
私に何かが不足していますか?あなたは順序を変更する必要がありますよね? 'foo()。Take(3).AsParallel()' – wdosanjos
違いは何ですか? – LmTinyToon
'AsParallel()'は後ろに何が来るのか分からないので、コレクション内のすべての項目を並列化するため、エラーが発生します。 'Take(3).AsParallel()'は最初の3つの要素をとり、それらを並列化します。したがって、エラーはありません。 – wdosanjos