-3
我想知道這一刻。我只是讀了一些關於線程和降落在那裏:任務與線程差異[複製]來自Jacek的stackoverflow(對不起,不能創建一個鏈接,因爲我只能使用聲譽<)同時運行線程給出不同的數字
和第一條評論來自MoonKnight帶我到那裏:albahari.com/threading
我已經採取了代碼,並改變了一點,使其更好地閱讀能夠發生什麼。這裏說到我改變的代碼:
static void Main()
{
Thread t = new Thread(WriteY); // Kick off a new thread
t.Start(); // running WriteY()
// Simultaneously, do something on the main thread.
for (int i = 0; i < 10; i++) { System.Threading.Thread.Sleep(1); Console.Write(i); };
Console.ReadLine();
}
static void WriteY()
{
for (int y = 0; y < 10; y++) { System.Threading.Thread.Sleep(1); Console.Write(y); };
Console.ReadLine();
}
我的預期發生(會發生什麼,大部分的時間)是這樣的: 好主題:
但這裏是我想知道的東西(它絕對隨機並承諾相同的代碼):
奇蹟螺紋:
我的問題:
1.這是怎麼發生的,有不同的數字線程應該始終運行在同一時間不應該他們?
2.所有這變得更加瘋狂的睡眠時間變得如此,如果你刪除它完全是荒原絕對隨機下部
*「線程應該總是在同一時間運行?」* - 沒有。想象一下,如何保證兩個線程中的兩個循環在每個步驟中都同步。這是可能的,但你必須寫出相當數量的代碼才能實現。計算機上正在運行許多許多進程和線程。他們每個人都有一點時間去做自己的事情。線程是凌亂的。如果兩個運行相同代碼的線程總是碰巧在用戶看來是同一時刻做同樣的事情,那麼聖誕老人級的奇蹟就是如此。 –
如果你想同步它們,使用適當的機制 –
@ed我看到感謝您的快速答案 – Pr0gr4mm3r