2011-02-22 63 views
0

我對winmm.dll的理解是它可以改變「滴答」的長度。無滴答操作系統中滴答的長度

在像Windows 7這樣的無滴答的操作系統中,這有什麼用處/作用?

+0

你在談論timeBeginPeriod或timeSetEvent嗎? 「無滴答」是什麼意思? – 2011-02-22 19:16:46

+0

@Hans:對於timeBeginPeriod有。 WinXP使用了一個導致「打勾」的硬件定時器。 tick是搶佔線程之間的最小時間量。當發生滴答時,它會導致中斷,迫使當前線程回到內核可以執行線程調度的內核。分辨率越高,發生的中斷越多,從而降低系統性能,但增加了調度的良好收益。 Win7改爲使用可在百萬分之一秒內安排的「無滴答」中斷。內核說,在這個時候喚醒我,而不是中斷每個X毫秒。 – Bengie 2011-02-22 19:36:30

回答

3

調用timeBeginPeriod不允許您更改「滴答」的長度,而是設置您期望從多媒體定時器功能中獲得的最小分辨率。如果您撥打timeBeginPeriod(1),那麼您可以通過呼叫timeSetEvent從您設置的計時器獲得1毫秒的分辨率(最好)。

除非你使用多媒體定時器(你可能不應該這樣做,考慮到它們已被棄用而支持線程池定時器),沒有理由打電話給timeBeginPeriod甚至不用擔心它。然而,有令人信服的理由而不是調用timeBeginPeriod或設置最小定時器分辨率的任何其他功能。見http://www.microsoft.com/whdc/system/pnppwr/powermgmt/Timer-Resolution.mspxas

無論您使用timeBeginPeriod設置什麼,Windows都會以100納秒「滴答」爲間隔記錄時間。如果你真的需要它,timeBeginPeriod只是一種獲得更細粒度的週期性事件的方法。它對Windows如何保持時間沒有影響。