为什么下面的代码对不同的执行给出不同的输出?

本文关键字:输出 执行 代码 为什么 | 更新日期: 2023-09-27 18:07:00

class Program
{
    public static void ThreadMainMethod()
    {
        for(int i=0;i<10;i++)
        {
            Console.WriteLine("Thread Proc{0}",i);
            Thread.Sleep(0);
        }
    }
    static void Main(string[] args)
    {
        Thread t = new Thread(new ThreadStart(ThreadMainMethod));
        t.Start();
        for(int i=0;i<4;i++)
        {
            Console.WriteLine("From Main Thread");
            Thread.Sleep(0);
        }
        t.Join();
    }

为什么下面的代码对不同的执行给出不同的输出?

您的代码没有定义应该运行的顺序。你有四个计数线程,每个线程完全独立运行。Windows将按照它的调度程序决定的顺序运行线程——这将受到系统中其他进程的影响。

如果你不同步你的线程,就不能保证它们运行的顺序。