1

这里我需要一个线程的总时间,所以我使用 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 秒。

这是我获取内核和用户时间的正确方法吗?

谢谢。

4

0 回答 0