GetThreadTimes()返回0(零)作为所有线程的内核和用户时间

时间:2015-05-25 07:11:49

标签: c windows multithreading

我试图通过使用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); 

0 个答案:

没有答案