作業系統對sleep(1)影響

來源:互聯網
上載者:User

有時候,為了防止 CPU佔用100%,就使用Sleep(1)來使CPU稍做休息以達到作業系統任務調度的流暢性

但是,對於Sleep(1)所產生的效果,在不同的系統上會有不同的表現

 

上周發現原來正常啟動並執行程式,在最新的一台筆記本上無法正常運行,總是很慢,後來跟蹤,發現是檔案讀取太慢導致的,再跟蹤進去,發現是在讀取檔案之後對檔案分析的while()迴圈中Sleep(1)導致的

 

經過測試發現,在該有問題的筆記本上,Sleep(1)相當於Sleep(16),有15%的機率相當於Sleep(15),測試代碼如下:

 DWORD dw1 = GetTickCount();
 Sleep( 1 );
 DWORD dw2 = GetTickCount();
 long le = dw2 - dw1;

結果發現,le大部分時候都是16,有大約15%左右的機率是15

該筆記本的系統是windows table PC xp + sp3,(前面的名稱記得不大清楚了,基本上就是這個版本),硬體設定很高:3G記憶體,intel T7700 CPU

 

後來在其它的系統上測試,Sleep(1),即測試代碼中的le總是0,而在檔案分析的while()迴圈中每一圈都要Sleep(1),所以就非常明顯地造成了這個Sleep()的時間過長,以致於其影響了正常的運行

至於是操作操作對Sleep(1)的影響還是硬體對Sleep(1)的影響我不知道,沒有每件進行更詳細的測試,但得出一個結論:對這種“小問題”也不能掉以輕心,像這種問題如果只發生在客戶那裡,那就非常難解決

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.