Включает ли GetTickCount () время, затраченное на приостановку или спящий режим? - PullRequest
8 голосов
/ 04 февраля 2009

Чтобы уточнить, я имею в виду время, проведенное в то время, когда система приостановлена ​​/ находится в спящем режиме, а не вызывающий поток (GetTickCount () возвращает количество миллисекунд с момента загрузки системы).

Ответы [ 6 ]

5 голосов
/ 04 февраля 2009

Краткий ответ: Да.

Более длинный ответ: прочитайте GetTickCount () документы: прошло времени с момента запуска системы, и даже MS не предполагает, что время стоит на месте пока ваш компьютер находится в спящем режиме ...

5 голосов
/ 04 февраля 2009

Насколько я знаю, GetTickCount не связан с потоками и считает время с момента запуска системы. Но лучше использовать GetTickCount64 , чтобы избежать 49,7-дневного ролевого перехода.

Кстати, чтобы получить то, что вам нужно, вам нужна функция GetThreadTimes . Он записывает время создания и завершения и количество времени, которое поток провел в пространстве пользователя или ядра. Таким образом, у вас есть хороший способ рассчитать количество потраченного времени.

Хорошо, я пропустил "системную" часть вопроса. Но это просто. В спящем режиме GetTickCount продолжает отсчет. Потому что люди пострадали от ошибки 49,7 дней, когда компьютер большую часть времени находился в спящем режиме. См. текст ссылки здесь для получения дополнительной информации.

2 голосов
/ 03 июня 2014

Для любого, кто ищет ответ на платформе Windows CE, из документов:

http://msdn.microsoft.com/en-us/library/ms885645.aspx

Вы можете прочитать:

Для конфигураций выпуска эта функция возвращает число миллисекунды с момента загрузки устройства, , исключая любое время система была приостановлена ​​. GetTickCount начинается с 0 при загрузке и затем считается оттуда.

2 голосов
/ 31 октября 2010

Да, GetTickCount включает время приостановки / спящего режима.

В следующем скрипте Python я вызываю API режима ожидания для ожидания 40 секунд, чтобы дать мне возможность перевести компьютер в режим гибернации, и печатаю время до и после, а также разницу в числе тиков после.

import win32api
import time
print time.strftime("%H:%M:%S", time.localtime())
before = win32api.GetTickCount()
print "sleep"
win32api.Sleep(40000)
print time.strftime("%H:%M:%S", time.localtime())
print str(win32api.GetTickCount()-before)

Выход:

17:44:08
sleep
17:51:30
442297

Если бы GetTickCount не включал время во время гибернации, это было бы намного меньше, чем время, в течение которого я находился в спящем режиме, но оно соответствует фактическому истекшему времени (7 минут 22 секунды равняется 442 секундам, то есть 442000 миллисекундных «тиков»). *

0 голосов
/ 08 ноября 2009

Нет, GetTickCount() не включает время, которое система проводит во время спящего режима. Простой тест доказывает это.

в Python:

import win32api
win32api.GetTickCount()

- сделать гибернацию -

win32api.GetTickCount()

и вы увидите результат ...

0 голосов
/ 04 февраля 2009

GetTickCount() показывает время в миллисекундах с момента загрузки компьютера. он не имеет ничего общего с вызывающим его процессом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...