利用windows系统函数GetSystemTimes()间接获得,GetSystemTimes()可获得系统自开机以来处于内核态的CPU时间、处于用户态的CPU时间以及空闲时间,分别,在500毫秒的时间差内分别计算这三种时间的时间差(记作ΔkernelTime、ΔuserTime和ΔidleTime)。
__int64 CompareFileTime ( FILETIME time1, FILETIME time2 )
{
__int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime ;
__int64 b = time2.dwHighDateTime << 32 | time2.dwLowDateTime ;
return (b - a);
}
int GetCPUUse()
{
FILETIME preidleTime, prekernelTime, preuserTime;
FILETIME idleTime, kernelTime, userTime;
GetSystemTimes(&preidleTime, &prekernelTime, &preuserTime);
Sleep(500);
GetSystemTimes(&idleTime, &kernelTime, &userTime);
int idle = CompareFileTime( preidleTime,idleTime);
int kernel = CompareFileTime( prekernelTime, kernelTime);
int user = CompareFileTime(preuserTime, userTime);
return (kernel +user - idle) *100/(kernel+user);
}
参考文章:http://hi.baidu.com/widebright/item/16c050f11d8d6410d6ff8c41