Ejemplo n.º 1
0
        public void OrderableListPartitionerTest()
        {
            var nums = Enumerable.Range(0, 100).ToArray();
            OrderableListPartitioner <int> partitioner = new OrderableListPartitioner <int>(nums);

            // Use with Parallel.ForEach
            Parallel.ForEach(partitioner, (i) => Debug.WriteLine("Thread:" + Thread.CurrentThread.Name + "," + i));


            // Use with PLINQ
            var query = from num in partitioner.AsParallel()
                        where num % 2 == 0
                        select num;

            foreach (var v in query)
            {
                Debug.WriteLine(v);
            }
        }
Ejemplo n.º 2
0
        private static void RunOrderablePartitionerTest1Core(int size, bool keysIncreasingInEachPartition, bool keysNormalized)
        {
            string methodInfo = string.Format("RunOrderablePartitionerTest1(size={0}, keysIncreasingInEachPartition={1}, keysNormalized={2})",
                                              size, keysIncreasingInEachPartition, keysNormalized);

            int[]             arr         = Enumerable.Range(0, size).ToArray();
            Partitioner <int> partitioner = new OrderableListPartitioner <int>(arr, keysIncreasingInEachPartition, keysNormalized);

            // Without ordering:
            int[] res = partitioner.AsParallel().Select(x => - x).ToArray().Select(x => - x).OrderBy(x => x).ToArray();
            if (!res.OrderBy(i => i).SequenceEqual(arr))
            {
                Assert.True(false, string.Format(methodInfo + "  > Failure: Incorrect output"));
            }

            // With ordering:
            int[] resOrdered = partitioner.AsParallel().AsOrdered().Select(x => - x).ToArray().Select(x => - x).ToArray();
            if (!resOrdered.SequenceEqual(arr))
            {
                Assert.True(false, string.Format(methodInfo + "  > Failure: Incorrect output"));
            }
        }