为什么以下代码为不同的执行提供不同的输出

时间:2015-08-09 14:09:08

标签: c# multithreading

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();
    }

1 个答案:

答案 0 :(得分:2)

您的代码没有定义应该运行的订单。您有四个计数线程,每个线程完全独​​立地运行。 Windows将按照调度程序确定的顺序运行线程 - 这会受到系统中其他所有进程的影响。

如果您没有同步线程,则无法保证它们的运行顺序。