获取电脑CPU利用率

来源:互联网 发布:php网站短信接口价格 编辑:程序博客网 时间:2024/05/14 16:38
#include "stdafx.h"
#include <stdio.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 _tmain(int argc, CHAR* argv[])

{

    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;

}
0 0
原创粉丝点击