为什么多个内核参与顺序算法?

时间:2011-12-16 02:49:11

标签: c# cpu amd-processor

当我在C#中运行bubblesorts,cocktailorts和quicksorts时,我可以看到所有3个内核都参与了我的AMD X3(X4附带1个故障核心)。

为什么会这样?我的算法是顺序的,我的代码没有任何线程标记。特别是像排序算法这样的高度顺序算法没有,一个事件直到下一个完成才会发生。它如何设法拆分算法?

例如,请求中的bubblesort:

 public void BubbleSort()
    {
        for (int i = 1; i < amount; i++)
        {

            for (int j = 0; j < a; j++)
            {
                if (numbers[j] > numbers[j + 1])
                {
                    t = numbers[j + 1];
                    numbers[j + 1] = numbers[j];
                    numbers[j] = t;
                }
             }
          a--;
        }

    }

2 个答案:

答案 0 :(得分:3)

您的代码可能会在上下文切换上交换核心。但是一次只能使用一个。

答案 1 :(得分:1)

可以使排序算法并行运行并利用多个核心。你使用哪种排序程序?它们很可能不是顺序算法。

举个例子,Quicksort非常容易parallelize via divide and conquer