Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C GetThreadTimes如何报告休眠时间?_C_Windows_Winapi - Fatal编程技术网

C GetThreadTimes如何报告休眠时间?

C GetThreadTimes如何报告休眠时间?,c,windows,winapi,C,Windows,Winapi,我目前正在使用GetThreadTimes来告诉我在应用程序的事件循环中花费了多少时间 我想知道冬眠会如何影响这一点。是否报告了休眠时间?或者作为系统时间?所有版本的Windows上的行为是否相同 注意我对Posix问了同样的问题。不,休眠时间没有报告 怎么可能呢 当休眠时,计算机实际上已关闭,没有计时器在滴答作响,也没有计数。 使用GetThreadTimes看到的计时是在系统计时器1的每个刻度(即中断)处计算的 我制作了一个小的C程序来测试这一点。 它每1000毫秒记录一次计时,我运行它并休

我目前正在使用
GetThreadTimes
来告诉我在应用程序的事件循环中花费了多少时间

我想知道冬眠会如何影响这一点。是否报告了休眠时间?或者作为系统时间?所有版本的Windows上的行为是否相同

注意我对Posix问了同样的问题。

不,休眠时间没有报告 怎么可能呢

当休眠时,计算机实际上已关闭,没有计时器在滴答作响,也没有计数。
使用
GetThreadTimes
看到的计时是在系统计时器1的每个刻度(即中断)处计算的

我制作了一个小的C程序来测试这一点。
它每1000毫秒记录一次计时,我运行它并休眠我的笔记本电脑(大约9秒)。
计数中未显示间隙,正如预期的那样,每条线距离前一条线约1000 ms

因此休眠时间既不计入系统时间,也不计入用户时间。

我不知道这与所有旧版本的Windows是一致的,特别是那些具有不同休眠含义的Windows,但是你可以期望它在所有重要的版本中都是一致的


1HPET、LAPIC计时器或旧good PIT,无论可用的是什么,这个问题实际上相当于:«
GetThreadTimes
从哪里获取数据?处理计数器/计时器还是其他地方?»但由于MSDN没有包含任何关于该主题的单词,据我所知,您是如何找到这些信息的?@yoric see。或者制作一个循环的测试程序,并使用
Sleep
。您将始终读取0作为用户和系统时间。为了制作那个测试程序,我不得不使用一个低效的自旋循环——这足以理解线程计时是如何计算的。