.NET下的多線程編—3-Thread.Sleep

來源:互聯網
上載者:User

  閱讀目錄

  一:什麼是Thread.Sleep?

  二:舉例

  三:什麼時候用線程?

  四:使用線程的缺點

  一:什麼是Thread.Sleep?

    1.Thread.Sleep() 本身的含義是將當前線程掛起指定的時間。

    2. MSDN的說明:指定零 (0) 以指示應掛起此線程以使其他等待線程能夠執行。

      Thread.Sleep(0) 並非是真的要線程掛起0毫秒,這樣顯的毫無意義,意義在於這次調用Thread.Sleep(0)的當前線程被凍結了一下,讓其他線程有機會優先執行。 Thread.Sleep(0) 是你的線程暫時放棄CPU,也就是釋放一些未用的時間片給其他線程或進程使用,就相當於一個讓位動作。我們可以這樣理解,其實是讓當前線程掛起,使得其他線程可以和當前線程再次的搶佔CPU資源。

    3. 由於CPU資源是有限的,所以進程中的多個線程要搶佔CPU,這也導致進程中的多個線程交替執行。

            好比說
            人們在排隊買東西
            輪到你了,而你可能還沒想好買什麼或者在考慮什麼,總之你不著急買
            那麼你可以讓位,你可以Thread.Sleep(100)
            讓身後排隊的100個人買了你再買
            也可以Thread.Sleep(0)
            讓出一下
            後邊有人頂上了,你就排他後邊 
            如果後邊沒人 那麼你自然還可以排在你原來的位置上。

 

 

   二:舉例

View Code

 1 delegate void OutPutDelegate(); 2 static void Main(string[] args) 3 { 4       Console.WriteLine("Now main thread begin"); 5       OutPutDelegate outPutDelegate = new OutPutDelegate(OutPutData); 6       Thread thread = new Thread(new ThreadStart(outPutDelegate)); 7        thread.Start(); 8        for (int i = 0; i < 5; i++) 9        {10             Console.WriteLine(i);11             Thread.Sleep(0);12         }13         Console.ReadKey();14 }15 16 private static void OutPutData()17 {18         Console.WriteLine("Orther Thread");19          for (int i = 0; i < 10; i++)20          {21               Console.WriteLine(i);22          }23          Console.ReadKey();24 }

主線程掛起來了,資源重新分配,主線程和Orther Thread線程再次的搶佔CPU資源,Orther Thread沒有搶佔到CPU資源,最後還是主線程搶到CPU資源了,所以先輸出了0-4。

主線程掛起來了,資源重新分配,主線程和Orther Thread線程再次的搶佔CPU資源,主線程搶到CPU資源了所以輸出了數字1,Orther Thread一開始沒搶到CPU資源,後來Orther Thread又搶佔到了CPU資源輸出了數字0-9,多個線程交替執行。

主線程掛起來了,資源重新分配,主線程和Orther Thread線程再次的搶佔CPU資源,主線程沒有搶到CPU資源,Orther Thread搶到CPU資源先輸出了數字0-9。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.