ActorBenchmark.Program.skynetParallel C# (CSharp) Method

skynetParallel() private static method

private static skynetParallel ( long num, long size, long div ) : long
num long
size long
div long
return long
        private static long skynetParallel(long num, long size, long div)
        {
            if (size == 1)
            {
                return num;
            }
            else
            {
                long total = 0;

                long[] source = new long[div];
                for (var i = 0; i < div; i++)
                {
                    source[i] = i;
                }

                var rangePartitioner = Partitioner.Create(0L, source.Length);

                Parallel.ForEach(rangePartitioner,
                    () => 0L,
                    (range, loopState, runningtotal) =>
                        {
                            for (long i = range.Item1; i < range.Item2; i++)
                            {
                                var sub_num = num + i * (size / div);
                                runningtotal += skynetSync(sub_num, size / div, div);
                            }
                            return runningtotal;
                        },
                    (subtotal) => Interlocked.Add(ref total, subtotal)
                );

                return total;
            }
        }