GetThreadtimes给出了奇怪的结果

Ido*_*dov 1 c++ windows timing


我正在使用GetThreadTimes每5微秒(或多或少)监视一个线程
该线程是" Sleeping"1分钟,但由于某种原因,有时我从GetThreadTimes变化获得"用户时间" ,即使该线程仍处于睡眠模式.
内核时间始终为0.

有人知道它为什么会发生吗?
谢谢 :)

小智 6

5微秒?!

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

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

Linux和Win32在您讨论的规模上都有奇怪的线程运行时报告行为.我发现可以真正测量低至5微秒的预定执行时间的唯一操作系统是Mac OS X和VxWorks - QNX也可能具有此功能.