2017年8月16日 星期三

使用SpinWait 取代 ThreadSleep


使用SpinWait 取代 ThreadSleep




Sleep與SpinWait的區別:

使用Thread.Sleep()會導致等待過於進行切換,等待時間不准確,而且會由用戶模式切換到內核模式;使用SpinWait(一個輕量同步類型(結構體))來進行等待的處理,等待過程中會使用自旋等待,從而避免線程頻繁的用戶模式和內核模式切換,一般用於短時的等待操作

當我們在處理一個執行緒時,若需要同步等待時,以往可能會常用 Thread.Sleep,但 Thread.Sleep 會消耗 CPU 的時間配置,所以我們可以使用 Thread.SpinWait 方法 、SpinWait 結構


SpinWait.SpinUntil(() => false, 10000)

Thread.Sleep(10000)





來源:

C#多線程總結

http://www.cnblogs.com/skig/archive/2016/11/15/ThreadSummary.html

[C#.NET][Thread] 善用 SpinWait 處理 執行緒空轉 以利提昇效能

https://dotblogs.com.tw/yc421206/archive/2013/04/25/102300.aspx

沒有留言:

張貼留言

區網電腦連 WAMP 架設的網站 出現You don’t have permission to access / on this server 解決辦法

參考 修改 httpd.conf 內容 1. 將 Require all denied 改為 Require all granted 參考2  修改  httpd-vhosts.conf  內容 2.將 Require local 改為 Require ...