我试图通过使用GetThreadTimes
来获取特定线程的CPU利用率,但是对于所有线程,内核和用户时间等于零。
注意:线程是由_beginthreadex
创建的。
(dThreadID->hThread = (HANDLE) _beginthreadex(NULL, 0,
(LPTHREAD_START_ROUTINE)threadFunc, threadParam, 0,
&(dThreadID->threadID));)
这种情况与_beginthreadex
的安全属性有什么关系?
请让我知道如何解决此案。
提前致谢
代码: 我在静态函数中调用它,所以粘贴它。
threadId = GetCurrentThreadId();
curThread = GetCurrentThread();
GetThreadTimes(curThread, &ftCreation, &ftExit, &ftKernel, &ftUser);
GetSystemTimes(&ftidle, &ftKernelCpu, &ftUserCpu);
ftSysKernelDiff = SubtractTimes(&ftKernelCpu, &ftKernelCpu_old);
ftSysUserDiff = SubtractTimes(&ftUserCpu, &ftUserCpu_old);
ftProcKernelDiff =SubtractTimes(&ftKernel, &ftKernel_old);
ftProcUserDiff =SubtractTimes(&ftUser, &ftUser_old);
nTotalSys = ftSysKernelDiff + ftSysUserDiff;
nTotalProc = ftProcKernelDiff + ftProcUserDiff;
nCpuUsage = (short)((100.0 * nTotalProc) / nTotalSys);