Как я могу использовать 100% мощности машины при использовании [Parallel.ForEach]?

        long lngSum = 0;


        Parallel.ForEach(Partitioner.Create(0L, lngMax + 1), range =>
        {
            long local = 0;
            //4cores : 9 ranges
            //64cores : 97 ranges
            for (long i = range.Item1; i <= range.Item2 - 1; i++)
            {
                if (i % 2 == 0)
                {
                    local += i;
                }
                else
                {
                    local -= i;
                }
            }
            Interlocked.Add(ref lngSum,  local);
        });

Когда я запускаю этот код C# на 4-ядерном компьютере, общее использование процессора составило 100%.

но

Когда я запускаю этот код C# на 64-ядерном компьютере, общая загрузка ЦП составляла не 100%, а только 50~60%.

Как я могу использовать 100% мощности машины?

0 ответов

Другие вопросы по тегам