您的位置:首页 >C++获取CPU使用率方法详解
发布于2026-03-11 阅读(0)
扫一扫,手机访问
答案:通过系统API或文件读取CPU时间差计算使用率。Windows调用GetSystemTimes获取内核、用户和空闲时间,Linux读取/proc/stat解析cpu行数据,均两次采样计算总时间和空闲时间差值,代入公式(总-空闲)/总×100%得出CPU使用率,建议间隔1秒以上采样并封装为类以避免全局变量污染。

在C++中获取CPU使用率没有统一的跨平台接口,需要根据操作系统选择不同的实现方式。Windows和Linux系统提供了各自的系统调用或API来查询CPU使用情况。以下是常见平台下的实现方法。
步骤说明:
示例代码片段:
#include <windows.h>double GetCPUPercentage() { static ULARGE_INTEGER lastIdleTime, lastKernelTime, lastUserTime; ULARGE_INTEGER idleTime, kernelTime, userTime;
if (!GetSystemTimes(&(FILETIME)idleTime, &(FILETIME)kernelTime, &(FILETIME)userTime)) return -1.0; ULONGLONG totalTimeNow = kernelTime.QuadPart + userTime.QuadPart; ULONGLONG idleTimeNow = idleTime.QuadPart; ULONGLONG totalTimeDiff = totalTimeNow - (lastKernelTime.QuadPart + lastUserTime.QuadPart); ULONGLONG idleTimeDiff = idleTimeNow - lastIdleTime.QuadPart; double cpuUsage = 1.0 - ((double)idleTimeDiff / (double)totalTimeDiff); lastIdleTime = idleTime; lastKernelTime = kernelTime; lastUserTime = userTime; return cpuUsage * 100.0;}
实现思路:
示例代码片段:
#include <iostream> #include <fstream> #include <sstream> #include <vector> #include <unistd.h>double GetCPUPercentage() { std::ifstream file("/proc/stat"); std::string line; std::getline(file, line);
std::istringstream iss(line); std::string cpu; ULONGLONG user, nice, system, idle, iowait, irq, softirq; iss >> cpu >> user >> nice >> system >> idle >> iowait >> irq >> softirq; ULONGLONG total = user + nice + system + idle + iowait + irq + softirq; ULONGLONG idleTotal = idle + iowait; static ULONGLONG lastTotal = 0, lastIdle = 0; double usage = 0.0; if (lastTotal != 0) { ULONGLONG totalDiff = total - lastTotal; ULONGLONG idleDiff = idleTotal - lastIdle; usage = 100.0 * (totalDiff - idleDiff) / totalDiff; } lastTotal = total; lastIdle = idleTotal; return usage;}
基本上就这些。不同系统机制不同,但核心原理一致:通过时间差计算CPU活跃占比。
下一篇:爱读书阁修改登录密码教程
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9