2015-08-09 30 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

相關問題