现在的位置: 首页 > 综合 > 正文

CE6 CPU 使用率

2013年10月09日 ⁄ 综合 ⁄ 共 957字 ⁄ 字号 评论关闭

直接上代码:

/*
在 OEMIdle() 函数中 OEM 根据 (int)(dwRescheduleTime – CurMSec) 
计算值判断是否让 CPU 进入 idle 状态,因此我们可以利用此函数来计算 CPU 的 loading. 
根据 MSDN ,可以写个应用程序,每 100ms 去计算一次 idle 的时间,
10 次评价后,在UI上更新,以下是一个被 Timer 循环调用的函数。建议将此函数写成的一个线程。
*/

void CSystemInfoDlg::GetCpuStatus(CString &csInfo)
{
#define IDLE_COUNT  10
  DWORD dwStartTick = 0;
  DWORD dwIdleStart = 0;
  DWORD dwStopTick = 0;
  DWORD dwIdleEnd = 0;
  int iPresentIdle = 0;
  int iCpuUage[IDLE_COUNT] = {0};
  int iCount = 0;
  int iAverage = 0;
  static int iPreAverage = 0;
  DWORD dwSum = 0; 
  int i = 0;

  while(iCount < IDLE_COUNT)
  {
    dwStartTick = GetTickCount();
    dwIdleStart = GetIdleTime();
    Sleep(100);

    dwStopTick = GetTickCount();
    dwIdleEnd = GetIdleTime();

    iPresentIdle = (100 * (dwIdleEnd - dwIdleStart)) / (dwStopTick - dwStartTick);
    iCpuUage[iCount] = iPresentIdle;
    iCount++;
    //10 times count
    if(IDLE_COUNT == iCount)
    {
      for(i = 0;i < IDLE_COUNT;i++)
      {
        dwSum += iCpuUage[i];
      }
      iAverage = dwSum / IDLE_COUNT;

      if(iPreAverage != iAverage)
      {
        iPreAverage = iAverage;
      }
      RETAILMSG(1,(TEXT("CPU used is:%d%%\r\n"),100 - iAverage));
      csInfo.Format(L"CPU used is:%d%%.",100 - iAverage);

      break;
    }
  }
}

【上篇】
【下篇】

抱歉!评论已关闭.