c++ - GetThreadtimes 给出奇怪的结果

标签 c++ windows timing


我正在使用 GetThreadTimes 每 5 微秒(或多或少)监视一个线程
该线程“ sleep ”持续 1 分钟,但由于某种原因,有时我从 GetThreadTimes 获得的“用户时间”发生变化,即使该线程仍处于 sleep 模式。< br/> 内核时间始终为 0。

有人知道为什么会这样吗?
谢谢:)

最佳答案

5 微秒?!

GetThreadTimes() 测量线程在 sleep 、用户/内核模式下花费的量子数。我在 Win32 上观察到 10-15 毫秒的典型调度程序量程。在一个量程以下,您会发现 GetThreadTimes() 报告的时间没有改变——它基本上只是将经过的量程(在每个状态中)的(整数)数乘以一个量程的持续时间。

低于 10-15 毫秒,您真的不能期望 GetThreadTimes() 返回的任何值都是准确的。 非常,一次只能看到更新的三个测量值之一;正如您所讨论的那样。

在您讨论的规模上,Linux 和 Win32 都有古怪的线程运行时报告行为。我发现唯一可以真正将计划执行时间测量到 5 微秒的操作系统是 Mac OS X 和 VxWorks - QNX 可能也有这种能力。

关于c++ - GetThreadtimes 给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596490/

相关文章:

windows - Win32 WM_CTLCOLORSTATIC 背景未完全填充

windows - Windows 如何保护过渡到内核模式?

c++ - 对一段代码进行计时时是否需要 volatile?

c++ - 对于普通优先级进程,我可以将单个线程的优先级设置为 15 以上吗?

c++ - 简单便携的乒乓通讯

c++ - 过载分辨率和通用引用参数

c++ - 为什么 C 基本类型的标识符具有多个关键字

c++ - 为什么结构的 sizeof 不等于每个成员的 sizeof 之和?

windows - 如何使用自动热键将窗口停靠在左侧?

algorithm - 定时同步