• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            羅朝輝(飄飄白云)

            關注嵌入式操作系統,移動平臺,圖形開發。-->加微博 ^_^

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              85 隨筆 :: 0 文章 :: 169 評論 :: 0 Trackbacks

            深入分析Sleep(0)與Sleep(1)的區別
            羅朝輝 (http://www.shnenglu.com/kesalin/)
            CC許可,轉載請注明出處
            目的:
            有時候我們想讓線程不被調度一定的時間,也就是說讓線程睡眠一段時間。

             


            API 接口:

            在 Win32中可以調用 Sleep,SleepEx 和 SwitchToThread 三個API。

            VOID WINAPI Sleep(DWORD dwMilliseconds);

            DWORD WINAPI SleepEx(DWORD dwMilliseconds, BOOl bAlertable);

            BOOl WINAPI SwitchToThread();


            在托管代碼中,我們可以調用靜態方法 Thread.Sleep。


            分析:

            Sleep 接口均帶有表示睡眠時間長度的參數 timeout。調用以上提到的 Sleep 接口,會有條件地將調用線程從當前處理器上移除,并且有可能將它從線程調度器的可運行隊列中移除。這個條件取決于調用 Sleep 時timeout 參數。


            當 timeout = 0, 即 Sleep(0),如果線程調度器的可運行隊列中有大于或等于當前線程優先級的就緒線程存在,操作系統會將當前線程從處理器上移除,調度其他優先級高的就緒線程運行;如果可運行隊列中的沒有就緒線程或所有就緒線程的優先級均低于當前線程優先級,那么當前線程會繼續執行,就像沒有調用 Sleep(0)一樣。


            當 timeout > 0 時,如:Sleep(1),會引發線程上下文切換:調用線程會從線程調度器的可運行隊列中被移除一段時間,這個時間段約等于 timeout 所指定的時間長度。為什么說約等于呢?是因為睡眠時間單位為毫秒,這與系統的時間精度有關。通常情況下,系統的時間精度為 10 ms,那么指定任意少于 10 ms但大于 0 ms 的睡眠時間,均會向上求值為 10 ms。

            而調用 SwitchToThread() 方法,如果當前有其他就緒線程在線程調度器的可運行隊列中,始終會讓出一個時間切片給這些就緒線程,而不管就緒線程的優先級的高低與否。

            結論:
            由上面的分析可以看出,如果我們想讓當前線程真正睡眠一下子,最好是調用 Sleep(1) 或 SwitchToThread()

            posted on 2012-10-11 20:04 羅朝輝 閱讀(6856) 評論(2)  編輯 收藏 引用 所屬分類: C/C++Windows

            評論

            # re: 深入分析Sleep(0)與Sleep(1)的區別[未登錄] 2012-10-11 21:08 123
            原來是這樣的講究,感謝分享  回復  更多評論
              

            # re: 深入分析Sleep(0)與Sleep(1)的區別 2012-10-14 17:25 溪流
            學習了  回復  更多評論
              

            国内精品人妻无码久久久影院| 久久国产三级无码一区二区| 亚洲综合久久夜AV | 2021国内精品久久久久久影院| 人妻丰满AV无码久久不卡| 嫩草影院久久国产精品| 欧美一区二区久久精品| 久久亚洲AV成人无码电影| 国产精品欧美亚洲韩国日本久久 | 精品国产一区二区三区久久| 国产V亚洲V天堂无码久久久 | 久久久精品人妻一区二区三区蜜桃| 久久婷婷五月综合色奶水99啪| 精品免费久久久久国产一区| 亚洲AV无码久久精品成人 | 99久久综合狠狠综合久久止| 亚洲国产精品成人久久蜜臀 | 精品熟女少妇AV免费久久| 久久国产免费观看精品| 久久久精品国产免大香伊| 久久久精品波多野结衣| 亚洲精品白浆高清久久久久久| 国产精品九九久久免费视频 | 久久久无码一区二区三区| 欧美亚洲国产精品久久| 久久精品三级视频| 激情综合色综合久久综合| 久久91精品国产91久久小草| 久久久噜噜噜久久熟女AA片| 久久亚洲精品国产精品婷婷| 久久精品无码免费不卡| 国产ww久久久久久久久久| 久久精品国产亚洲综合色| 久久99精品久久久久子伦| 久久w5ww成w人免费| 久久99精品久久久久久hb无码| 天天躁日日躁狠狠久久| 久久综合给久久狠狠97色| 中文字幕人妻色偷偷久久| 亚洲综合日韩久久成人AV| 亚洲精品蜜桃久久久久久|