2011-07-23 223 views
2

什麼是REALTIME_PRIORITY_CLASS(含THREAD_PRIORITY_TIME_CRITICAL其實呢?SetPriorityClass(REALTIME_PRIORITY_CLASS)實際上做了什麼?

它:

  • 防止從發射
  • 防止上下文從處理器上發生

(除非線程睡眠)切換中斷?

如果確實防止的發生以上:

  • 爲什麼當我使用該標誌的處理器上運行的程序,我仍然得到不一致的計時結果?不應該每次都花費相同的時間,如果沒有什麼中斷它的話?

如果並不妨礙上述情況的發生:

  • 爲什麼我的系統(鼠標,鍵盤等)鎖住了,如果我不當使用它嗎?司機是否仍然需要一些處理器時間?

回答

0

它基本上是告訴系統調度到只有大量的時間你的線程,直到它給它(通過SleepSwitchToThread)或死亡。至於時間不一樣,操作系統仍然在每次運行之間運行,這可以改變內存和緩存等。其次,大多數時間是不準確的,所以它會波動(特別是基於系統量子的時間,如GetTickCount)。操作系統中還有很多事情正在進行,比如省電/動態頻率調整,所以你最好檢查一下是否使用RDTSC,儘管你可能會注意到其他的東西在運行(特別是如果你可以運行多個物理線程) 。

相關問題