2011-07-23 186 views
2

什么是REALTIME_PRIORITY_CLASS(含THREAD_PRIORITY_TIME_CRITICAL其实呢?SetPriorityClass(REALTIME_PRIORITY_CLASS)实际上做了什么?

它:

  • 防止从发射
  • 防止上下文从处理器上发生

(除非线程睡眠)切换中断?

如果确实防止的发生以上:

  • 为什么当我使用该标志的处理器上运行的程序,我仍然得到不一致的计时结果?不应该每次都花费相同的时间,如果没有什么中断它的话?

如果并不妨碍上述情况的发生:

  • 为什么我的系统(鼠标,键盘等)锁住了,如果我不当使用它吗?司机是否仍然需要一些处理器时间?

回答

0

它基本上是告诉系统调度到只有大量的时间你的线程,直到它给它(通过SleepSwitchToThread)或死亡。至于时间不一样,操作系统仍然在每次运行之间运行,这可以改变内存和缓存等。其次,大多数时间是不准确的,所以它会波动(特别是基于系统量子的时间,如GetTickCount)。操作系统中还有很多事情正在进行,比如省电/动态频率调整,所以你最好检查一下是否使用RDTSC,尽管你可能会注意到其他的东西在运行(特别是如果你可以运行多个物理线程) 。

相关问题