2015年8月10日 星期一

[.NET]Thread.Yield()


另一個Thread切換執行的方式:Thread.Yield()

  • Yield()
    • 呼叫時會確認此CPU上是否有其他等待被呼叫的執行緒,若是,切換到其他執行去執行,若否,則會讓當前執行緒繼續執行;切換到何執行緒由作業系統自動選擇
    • 高CPU利用率
    • 關鍵:不管有沒有讓成功,CPU還是會執行你行程上的任一執行緒
  • Sleep(Time)
    • 將當前執行緒暫停一段指定時間,指定時間內當前執行緒絕對不會被執行,而空出來的CPU資源則交由作業系統去運用;在指定時間到達後,此執行緒重新進入分配佇列內等待執行
    • Thread.Sleep(0)有短暫讓出的效果,會檢查是否有等待執行的執行緒,若否,則本執行緒不會被暫停會繼續跑下去

    • 較低CPU利用率
    • 關鍵:在Sleep期間,此執行緒絕對不會被執行

沒有留言:

張貼留言