CE6 CPU 使用率

来源:互联网 发布:电器设计软件 编辑:程序博客网 时间:2024/05/16 20:28

直接上代码:

/*在 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;    }  }}



原创粉丝点击