Здесь мне нужно общее время потока, поэтому я использую функцию GetThreadTimes
чтобы получить режим ядра времен потока, а также в пользовательском режиме.
GetThreadTimes(threadHandle, &ftCreate, &ftExit, &ftKernel, &ftUser);
LARGE_INTEGER qwKernel, qwUser;
qwKernel.HighPart = ((ftKernel.dwHighDateTime));
qwKernel.LowPart = ftKernel.dwLowDateTime;
Я могу получить время создания потока. Но мне нужно получить общее время (время ядра + время пользователя), используемое этим потоком.
Поскольку кернал и пользовательское время, которое я получаю из GetthreadTimes, это сумма
времени (в миллисекундах или секундах), как получить эти времена.
Я попробовал ниже фрагмент кода. Но я получаю огромные числа в соответствующих QuadParts.
qwUser.HighPart = ftUser.dwHighDateTime;
qwUser.LowPart = ftUser.dwLowDateTime;
cout << "Kernel QuadPart value :" << qwKernel.QuadPart << endl;
cout << "User QuadPart value :" << qwUser.QuadPart << endl;
Я получаю вывод как:
Значение QuadPart ядра: 140716350575597 Значение QuadPart пользователя:
739454089384Значение QuadPart ядра: -2 Значение QuadPart пользователя: 739510908248
Из приведенного выше вывода я получаю огромное количество. Но общее время, затраченное моей нитью, составляет менее 10 секунд.
Это правильный способ получения времени ядра и пользователя ..?
Благодарю.
Задача ещё не решена.
Других решений пока нет …