多线程并行问题多线程并行问题

class Program{

        static int c = 0;
       
        static void Main(string[] args)
        {
            Parallel.For(0, 20, dosth);
        }

        static void dosth(int x)
        {
           
            Console.WriteLine(c++);
        }
}

输出结果是0-19的整数, 问题是为何这些整数的顺序是杂乱无章的,不是应该从小到大排列么

并行就相当于20个人一起赛跑,但是跑道只有5条,这时候线程就会抢占资源,所以输出是无序的。

一般来说,开发的时候如果对执行顺序有要求也不会用并行编程。

都是在前一次的基础加1,就算是并行也会有先后的,20个人跑步比赛,只是一起起跑,就算是一起到达,还是有毫秒或者是微秒的时间差