win32控制台 获取CPU使用率

来源:互联网 发布:java中void意思 编辑:程序博客网 时间:2024/05/05 19:24
#include <stdio.h>
#include "StdAfx.h"
#include <windows.h>
#include <iostream>
using namespace std;




__int64 CompareFileTime ( FILETIME time1, FILETIME time2 )//转换为整数时间
{
__int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime ;
__int64 b = time2.dwHighDateTime << 32 | time2.dwLowDateTime ;


return   (b - a);
}
int  main()
{
HANDLE hEvent;
BOOL res ;


FILETIME preidleTime;
FILETIME prekernelTime;
FILETIME preuserTime;


FILETIME idleTime;
FILETIME kernelTime;
FILETIME userTime;


res = GetSystemTimes( &idleTime, &kernelTime, &userTime );


preidleTime = idleTime;
prekernelTime = kernelTime;
preuserTime = userTime ;


hEvent = CreateEvent (NULL,FALSE,FALSE,NULL);// 初始值为 nonsignaled ,并且每次触发后自动设置为nonsignaled
while (1){


WaitForSingleObject( hEvent,1000 ); //等待500毫秒
res = GetSystemTimes( &idleTime, &kernelTime, &userTime );


int idle = CompareFileTime( preidleTime,idleTime);
int kernel = CompareFileTime( prekernelTime, kernelTime);
int user = CompareFileTime(preuserTime, userTime);


float cpu = (kernel +user - idle) *100.0/(kernel+user);
float cpuidle = ( idle) *100.0/(kernel+user);
cout << "CPU利用率:" << cpu << "%" << "      CPU空闲率:" <<cpuidle << "%" <<endl;




preidleTime = idleTime;
prekernelTime = kernelTime;
preuserTime = userTime ;
}
return 0;
}
原创粉丝点击