方法参考网上的一段代码,把它改成了类以方便调用,很简单,但是可以一用,哈哈。

cpu_usage.h

#include <windows.h>

class CpuUsage {
public:
    CpuUsage();
    void init();
    // get cpu usage rate from the last invoke of the function or init
    int get();

private:
    bool inited_;
    ULONGLONG cpu_time_;
    ULONGLONG cpu_idle_time_;
};

cpu_usage.cpp

#include "cpu_usage.h"

CpuUsage::CpuUsage(): inited_(false) {}

void CpuUsage::init() {
    FILETIME ft_sys_idle;
    FILETIME ft_sys_kernel;
    FILETIME ft_sys_user;

    ULARGE_INTEGER ul_sys_idle;
    ULARGE_INTEGER ul_sys_kernel;
    ULARGE_INTEGER ul_sys_user;

    GetSystemTimes(&ft_sys_idle, /* System idle time */
        &ft_sys_kernel,          /* system kernel time */
        &ft_sys_user);           /* System user time */

    CopyMemory(&ul_sys_idle, &ft_sys_idle, sizeof(FILETIME));
    CopyMemory(&ul_sys_kernel, &ft_sys_kernel, sizeof(FILETIME));
    CopyMemory(&ul_sys_user, &ft_sys_user, sizeof(FILETIME));

    cpu_time_ = ul_sys_kernel.QuadPart + ul_sys_user.QuadPart;
    cpu_idle_time_ = ul_sys_idle.QuadPart;

    inited_ = true;
}

// get cpu usage rate from the last invoke of the function or init
int CpuUsage::get() {
    if (!inited_)
        return -1;

    FILETIME ft_sys_idle;
    FILETIME ft_sys_kernel;
    FILETIME ft_sys_user;

    ULARGE_INTEGER ul_sys_idle;
    ULARGE_INTEGER ul_sys_kernel;
    ULARGE_INTEGER ul_sys_user;

    GetSystemTimes(&ft_sys_idle, /* System idle time */
        &ft_sys_kernel,          /* system kernel time */
        &ft_sys_user);           /* System user time */

    CopyMemory(&ul_sys_idle, &ft_sys_idle, sizeof(FILETIME));
    CopyMemory(&ul_sys_kernel, &ft_sys_kernel, sizeof(FILETIME));
    CopyMemory(&ul_sys_user, &ft_sys_user, sizeof(FILETIME));

    ULONGLONG interval = ul_sys_kernel.QuadPart + ul_sys_user.QuadPart - cpu_time_;
    int use_rate = (interval - (ul_sys_idle.QuadPart - cpu_idle_time_)) * 100 / interval;

    cpu_time_ = ul_sys_kernel.QuadPart + ul_sys_user.QuadPart;
    cpu_idle_time_ = ul_sys_idle.QuadPart;

    return use_rate;
}

 

相关文章:

  • 2022-12-23
  • 2021-08-30
  • 2021-12-18
  • 2021-11-23
  • 2022-01-15
  • 2022-12-23
  • 2021-04-05
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-09
  • 2023-01-08
  • 2021-09-10
  • 2021-10-10
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案