- #include "stdafx.h"
- #include <iostream>
- #include "CCPUPercent.h"
- using namespace std;
- CCPUPercent::CCPUPercent()
- {
- getSysTime.Initialization();
- }
- bool CCPUPercent::StartCalculateCPUPercent()
- {
- // 使用sleep进行间隔控制, 需要更加精确时间可以考虑使用
- // wait for event
- bool bRet = getSysTime.GetSystemTimes(idleTime,kernelTime,userTime);
- if(!bRet)
- return bRet;
- preidleTime = idleTime;
- prekernelTime = kernelTime;
- preuserTime = userTime;
- while(1)
- {
- Sleep(1000);
- bRet = getSysTime.GetSystemTimes(idleTime,kernelTime,userTime);
- if(!bRet)
- return bRet;
- LONGLONG idle = getSysTime.CalculateInterval(idleTime,preidleTime);
- LONGLONG kernel = getSysTime.CalculateInterval(kernelTime,prekernelTime);
- LONGLONG user = getSysTime.CalculateInterval( userTime,preuserTime);
- int cpu = ((kernel - idle +user)*100) /(kernel+user) ;
- if(kernel < idle)
- {
- cout << "wrong" << endl;
- }
- //(总的时间-空闲时间)/总的时间=占用cpu的时间就是使用率
- cout << "CPU利用率:" << cpu << "%" << endl;
- preidleTime = idleTime;
- prekernelTime = kernelTime;
- preuserTime = userTime ;
- }
- return true;
- }
- //该片段来自于http://www.codesnippet.cn/detail/1004201512178.html
来源: http://www.codesnippet.cn/detail/1004201512178.html