“使用Parallel.For进行并行排序无法正常工作”

时间:2019-05-15 07:40:16

标签: c# multithreading parallel-processing task-parallel-library parallel.foreach

我正在做一个项目,在这个项目中,我必须并行处理一些排序算法并将并行结果与顺序算法进行比较。我尝试使用Parallel.For循环并行化插入排序,但无法正常工作。数组的第一部分排序良好,另一部分从错误的索引开始再次对数组进行排序。

        Parallel.For(1, myarray.Length, x =>
        {

                int cur = myarray[x];
                int j = x;

                while (j > 0 && cur < myarray[j - 1])
                {
                    myarray[j] = myarray[j - 1];
                    j--;
                }
                myarray[j] = cur;                        
        }

我的结果中存在[0-1000]个错误的500个随机元素的结果:

...... 992 992 995 997 224 225 228 228 231 231 233 234 235 237 ......

仍然是500个元素,但是其中一部分被移到了最后。 因此它可以工作,但是有些线程尝试根据我猜的索引再次对其进行排序。我该如何解决?

0 个答案:

没有答案