强制代码在多个核心上运行

时间:2015-04-14 09:29:04

标签: c# .net windows multithreading affinity

我很惊讶Parallel不消耗所有线程。我写这段代码:

public static long Sum(this IList<long> list)
{
    long result = 0;
    Parallel.ForEach(Partitioner.Create(0, list.Count),
        () => 0L,
        (range, state, sum) => Sum(list, range),
        x =>
        {
            Interlocked.Add(ref result, x);
        });
    return result;
}

然后我尝试使用这个:

long res = list.AsParallel().Sum();

但它也消耗单核。

问题:我怎样强制在多个线程中运行此代码,通过设置进程关联性或其他东西,我想,有一些技术可以做到。

0 个答案:

没有答案