2015-08-09 71 views
1
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(); 
    } 
+4

因为除非同步,并发性本质上是非确定性的。 – Douglas

+6

“Knock!Knock!Race condition,Who's there?” – Andrei15193

回答

2

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

如果您不同步您的线程,则无法保证其运行顺序。

+0

你能告诉我如何同步这个程序@ shf301 –

+0

这取决于你想如何同步程序。您需要先定义订单。但多线程同步是一个大而复杂的领域。以下是您可以在.Net中使用的不同类型的列表:https://msdn.microsoft.com/en-us/library/9xyf641a(v=vs.110).aspx – shf301

相关问题