static void Test() { double[] array = new double[100]; for (int i = 0; i < array.Length; ++i) { array[i] = i; } double sum1 = array.Aggregate((total, current) => total + Math.Sqrt(Math.Abs(Math.Sin(current)))); Console.WriteLine("Linq aggregate = " + sum1); IParallelEnumerable <double> parray = array.AsParallel(); double sum2 = parray.Aggregate ( 0.0, (total1, current1) => total1 + Math.Sqrt(Math.Abs(Math.Sin(current1))), (total2, current2) => total2 + current2, acc => acc ); Console.WriteLine("Plinq aggregate = " + sum2); }
public Enumerator(IParallelEnumerable <T> source, Func <T, bool> predicate) { items = new List <Item>(); ParameterizedThreadStart threadStart = (object o) => { Item item = (Item)o; if (predicate(item.val)) { item.valid = true; } }; foreach (var s in source) { var t = new Thread(threadStart); Item item = new Item(t, s); items.Add(item); t.Start(item); } itemEnumerator = items.GetEnumerator(); }
public ChessEnumerable(IParallelEnumerable <T> e, Func <T, bool> predicate) { this.e = e; this.predicate = predicate; }