Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
C++如何获取CPU使用率_C++ CPU使用率获取方法_创想鸟

C++如何获取CPU使用率_C++ CPU使用率获取方法

答案:通过系统API或文件读取CPU时间差计算使用率。Windows调用GetSystemTimes获取内核、用户和空闲时间,Linux读取/proc/stat解析cpu行数据,均两次采样计算总时间和空闲时间差值,代入公式(总-空闲)/总×100%得出CPU使用率,建议间隔1秒以上采样并封装为类以避免全局变量污染。

c++如何获取cpu使用率_c++ cpu使用率获取方法

在C++中获取CPU使用率没有统一的跨平台接口,需要根据操作系统选择不同的实现方式。Windows和Linux系统提供了各自的系统调用或API来查询CPU使用情况。以下是常见平台下的实现方法。

Windows平台:使用GetSystemTimes

Windows提供了GetSystemTimes函数,可以获取系统总的CPU时间(空闲时间、内核时间、用户时间)。通过两次采样计算差值,得出CPU使用率。

步骤说明:

调用GetSystemTimes获取上一次和当前的空闲时间、内核时间和用户时间(FILETIME格式)将FILETIME转换为ULARGE_INTEGER进行数值计算计算两次采样之间的总CPU时间和空闲时间差值CPU使用率 = (总时间 – 空闲时间) / 总时间 × 100%

示例代码片段:

#include 

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;

}

立即学习“C++免费学习笔记(深入)”;

Linux平台:读取/proc/stat

Linux系统可通过读取/proc/stat文件获取CPU时间统计信息。该文件第一行以"cpu"开头,包含用户、系统、空闲等时间(单位:jiffies)。

实现思路:

打开并读取/proc/stat文件解析第一行"cpu"的数据,提取user、nice、system、idle等字段计算两次采样之间的总时间和空闲时间变化使用相同公式计算CPU使用率

示例代码片段:

#include #include #include #include #include 

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;

}

立即学习“C++免费学习笔记(深入)”;

注意事项与优化建议

首次调用时无法计算使用率,应返回0或缓存初始值建议间隔1秒以上采样,太短会导致数据波动大多核CPU可解析/proc/stat中cpu0、cpu1等行获取单核使用率Windows下需注意权限问题,部分服务环境可能受限生产环境中建议封装成类,避免全局变量污染

基本上就这些。不同系统机制不同,但核心原理一致:通过时间差计算CPU活跃占比。

以上就是C++如何获取CPU使用率_C++ CPU使用率获取方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1477745.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
c++中怎么比较两个字符串_C++字符串比较方法
上一篇 2025年12月19日 02:18:16
c++中如何实现滑动窗口最小值_c++滑动窗口最小值实现方法
下一篇 2025年12月19日 02:18:25

相关推荐

  • 夸克AI搜索和普通搜索的区别_夸克新旧搜索模式对比分析

    夸克AI搜索和普通搜索的区别_夸克新旧搜索模式对比分析夸克AI搜索和普通搜索的区别_夸克新旧搜索模式对比分析夸克AI搜索和普通搜索的区别_夸克新旧搜索模式对比分析夸克AI搜索和普通搜索的区别_夸克新旧搜索模式对比分析

    AI搜索通过理解意图生成直接答案,如夸克采用“先思考后搜索”策略,整合多源信息提供结构化回答。1、与传统关键词匹配不同,AI搜索输出分点建议等归纳内容。2、支持多轮对话与上下文追溯,可连续追问并准确识别指代对象。3、集成AI写作、文件总结等功能,实现从检索到任务解决的跃迁。4、在个性化推荐中强化隐私…

    2026年9月27日 • 用户投稿
    200
  • 联想 moto razr 50 Ultra AI 元启版哥特玫瑰限定版上市

    联想 moto razr 50 Ultra AI 元启版哥特玫瑰限定版上市联想 moto razr 50 Ultra AI 元启版哥特玫瑰限定版上市联想 moto razr 50 Ultra AI 元启版哥特玫瑰限定版上市联想 moto razr 50 Ultra AI 元启版哥特玫瑰限定版上市

    9 月 5 日,摩托罗拉手机官方宣布,联想 moto razr 50 ultra ai 元启版全新潘通流行色限定版——哥特玫瑰上市!提供 16gb+1tb 一种内存组合,售价 6999 元。 联想 moto razr 50 Ultra AI 元启版 小折叠屏手机 4.0 英寸外屏,1272 × 10…

    2026年9月27日 • 用户投稿
    000
  • sublime怎么关联文件类型_Sublime Text设置特定文件扩展名的默认语法

    sublime怎么关联文件类型_Sublime Text设置特定文件扩展名的默认语法sublime怎么关联文件类型_Sublime Text设置特定文件扩展名的默认语法sublime怎么关联文件类型_Sublime Text设置特定文件扩展名的默认语法sublime怎么关联文件类型_Sublime Text设置特定文件扩展名的默认语法

    在Sublime Text中设置特定文件扩展名的默认语法:打开文件后点击右下角语法名称,选择所需模式并设为该扩展名默认;2. 可通过编辑Packages/User/Preferences.sublime-settings文件添加extensions映射,指定.log用Plain Text、.myco…

    2026年9月27日 • 用户投稿
    100
  • 豆包AI如何实现自动化部署?CI/CD流程优化方案

    豆包AI如何实现自动化部署?CI/CD流程优化方案豆包AI如何实现自动化部署?CI/CD流程优化方案豆包AI如何实现自动化部署?CI/CD流程优化方案豆包AI如何实现自动化部署?CI/CD流程优化方案

    豆包ai的自动化部署通过标准化流程和工具链整合实现,其核心是利用ci/cd机制打通开发、测试、构建、发布等环节。1. ci/cd是指持续集成与持续交付/部署,确保代码提交后自动构建、测试并部署到相应环境,提升效率并减少人为错误。2. 关键步骤包括:代码提交触发ci、自动构建镜像、运行测试、部署至目标…

    2026年9月27日 • 用户投稿
    100
  • win10服务主机本地系统占用CPU过高_Svchost.exe进程导致CPU占用率高的解决方法

    win10服务主机本地系统占用CPU过高_Svchost.exe进程导致CPU占用率高的解决方法win10服务主机本地系统占用CPU过高_Svchost.exe进程导致CPU占用率高的解决方法win10服务主机本地系统占用CPU过高_Svchost.exe进程导致CPU占用率高的解决方法win10服务主机本地系统占用CPU过高_Svchost.exe进程导致CPU占用率高的解决方法

    首先定位高CPU占用的svchost.exe进程,通过任务管理器“详细信息”选项卡排序CPU使用率,右键高占用进程选择“转到服务”以识别具体关联服务;接着禁用常引发问题的Connected User Experiences and Telemetry(DiagTrack)服务,并将Windows U…

    2026年9月27日 • 用户投稿
    200
  • 摸头杀后又发力!印度动作冒险新作《Son of Thanjai》宣传PV公开

    摸头杀后又发力!印度动作冒险新作《Son of Thanjai》宣传PV公开摸头杀后又发力!印度动作冒险新作《Son of Thanjai》宣传PV公开摸头杀后又发力!印度动作冒险新作《Son of Thanjai》宣传PV公开摸头杀后又发力!印度动作冒险新作《Son of Thanjai》宣传PV公开

    近日,印度首款3a级大作《释放阿凡达》在发布实机演示后迅速走红网络,主角行云流水般的闪避动作搭配“摸头杀”炫技场面,瞬间引爆话题,引发大量二次创作热潮。 就在热度持续攀升之际,又一款来自印度的重磅游戏登场!PS官方近日发布了《Son of Thanjai》的正式宣传视频,带来全新视觉冲击,快一起来感…

    2026年9月27日 • 用户投稿
    000
  • 解决Spring Boot与React应用在AWS部署中CORS错误的终极指南

    解决Spring Boot与React应用在AWS部署中CORS错误的终极指南解决Spring Boot与React应用在AWS部署中CORS错误的终极指南解决Spring Boot与React应用在AWS部署中CORS错误的终极指南解决Spring Boot与React应用在AWS部署中CORS错误的终极指南

    本文旨在解决在Spring Boot后端(AWS EC2)和React前端(AWS S3)部署时,即使服务器端已配置宽松的CORS策略,仍出现跨域资源共享(CORS)错误的问题。我们将深入探讨常见误区,并提供一个将CORS配置与Spring Security有效整合的专业解决方案,同时强调处理wit…

    2026年9月27日 • 用户投稿
    100
  • linux怎么将用户添加到用户组

    linux怎么将用户添加到用户组linux怎么将用户添加到用户组linux怎么将用户添加到用户组linux怎么将用户添加到用户组

    在 Linux 系统中,可以通过以下步骤将用户添加到用户组:以 root 用户身份登录系统。使用 usermod 命令将用户添加到用户组。验证用户是否已成功添加到用户组。 如何将用户添加到 Linux 用户组 在 Linux 系统中,将用户添加到用户组是管理用户权限和访问控制的关键步骤。 步骤: 以…

    2026年9月27日 • 用户投稿
    000
  • 雷鸟手机(雷鸟手机)

    雷鸟手机(雷鸟手机)雷鸟手机(雷鸟手机)雷鸟手机(雷鸟手机)雷鸟手机(雷鸟手机)

    随着智能手机的日益普及,人们对于手机品牌的要求也越来越高。雷鸟手机作为一家新兴的手机品牌,在市场上取得了显著的成绩。本文将从雷鸟手机的品牌介绍、产品特点、技术创新、用户口碑等多个方面进行详细的介绍。 降重鸟 要想效果好,就用降重鸟。AI改写智能降低AIGC率和重复率。 113 查看详情 一、雷鸟手机…

    2026年9月27日 • 用户投稿
    100
  • 电脑内存超过 4GB,安装 32 位系统和 64 位系统有什么区别?

    电脑内存超过 4GB,安装 32 位系统和 64 位系统有什么区别?电脑内存超过 4GB,安装 32 位系统和 64 位系统有什么区别?电脑内存超过 4GB,安装 32 位系统和 64 位系统有什么区别?电脑内存超过 4GB,安装 32 位系统和 64 位系统有什么区别?

    64位系统能充分利用大内存并提升性能与安全性。当内存超过4GB时,32位系统受限于4GB寻址上限,仅能使用约3.5GB,造成资源浪费;而64位系统可完全利用8GB、16GB等大内存,显著提升多任务处理和运行效率。此外,64位架构支持更宽数据总线、更多寄存器及SSE/AVX指令集,增强计算能力,尤其利…

    2026年9月27日 • 用户投稿
    000
  • 铁路12306怎么激活会员_铁路12306会员激活方式

    铁路12306怎么激活会员_铁路12306会员激活方式铁路12306怎么激活会员_铁路12306会员激活方式铁路12306怎么激活会员_铁路12306会员激活方式铁路12306怎么激活会员_铁路12306会员激活方式

    先激活铁路畅行会员账户才能享受购票优惠或兑换车票。可通过12306 App在线激活,进入“铁路会员”页面,选择“在线激活”,完成人脸识别和协议确认;若失败,可持身份证至车站自助机或服务窗口,选择“会员激活”,输入交易密码完成激活。 如果您想通过积分累积来享受购票优惠或免费兑换车票,但尚未开通相关权益…

    2026年9月27日 • 用户投稿
    000
  • 在Java中实现ANSI颜色输出:解决CMD终端兼容性问题

    在Java中实现ANSI颜色输出:解决CMD终端兼容性问题在Java中实现ANSI颜色输出:解决CMD终端兼容性问题在Java中实现ANSI颜色输出:解决CMD终端兼容性问题在Java中实现ANSI颜色输出:解决CMD终端兼容性问题

    本文深入探讨了Java程序在Windows CMD终端中无法正确显示ANSI颜色代码的原因,并提供了两种有效的解决方案。首先,介绍通过外部命令cmd /c echo实现跨版本兼容的着色输出;其次,针对Java 22及更高版本,详细讲解如何利用Foreign Function & Memory…

    2026年9月27日 • 用户投稿
    000
  • sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键

    sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键

    使用 Ctrl/Cmd + / 可快速实现单行或多行注释,选中代码后再次按键取消注释,部分语言支持通过插件或手动输入实现块注释,提升编码效率。 在 Sublime Text 中快速注释代码非常方便,支持单行和多行的注释操作,提升编码效率。 单行注释快捷键 将光标放在需要注释的行,使用以下快捷键: W…

    2026年9月27日 • 用户投稿
    000
  • linux镜像文件怎么查看

    linux镜像文件怎么查看linux镜像文件怎么查看linux镜像文件怎么查看linux镜像文件怎么查看

    查看 Linux 镜像文件的方法包括:用文件管理器查看元数据。用命令行工具 file 查看文件类型。在安装程序中查看内容(如 Ubuntu 安装程序)。将镜像文件加载到虚拟机中。 如何查看 Linux 镜像文件 Linux 镜像文件是包含操作系统和文件系统的归档文件。它们通常用于创建虚拟机或在物理计…

    2026年9月27日 • 用户投稿
    000
  • 谷歌浏览器怎么让网页自动刷新_谷歌浏览器设置页面定时刷新方法

    可通过安装Chrome扩展实现网页自动刷新。首先在扩展管理页进入Chrome网上应用店,搜索ChromeReloader、ChromeReloadPlus或Auto Refresh Plus插件并安装;随后点击插件图标设置刷新间隔,如5秒至30分钟内选择或自定义时间,启用后页面将按设定周期自动重载,…

    2026年9月27日
    100
  • windows怎么打开讲述人_windows讲述人功能开启与设置教程

    windows怎么打开讲述人_windows讲述人功能开启与设置教程windows怎么打开讲述人_windows讲述人功能开启与设置教程windows怎么打开讲述人_windows讲述人功能开启与设置教程windows怎么打开讲述人_windows讲述人功能开启与设置教程

    通过快捷键Win+Ctrl+Enter可快速开启讲述人,也可在设置中手动启动并自定义语音、语速及启动行为,提升视障用户操作体验。 如果您在使用Windows系统时需要辅助功能来朗读屏幕上的内容,可以通过开启“讲述人”功能实现。该工具能够帮助视障用户或需要语音反馈的用户更方便地操作电脑。以下是具体的开…

    2026年9月27日 • 用户投稿
    200
  • AI绘图工具生成的图片会有版权问题吗?2025解答

    AI绘图工具生成的图片会有版权问题吗?2025解答AI绘图工具生成的图片会有版权问题吗?2025解答AI绘图工具生成的图片会有版权问题吗?2025解答AI绘图工具生成的图片会有版权问题吗?2025解答

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ AI绘图工具生成的图片,其版权归属问题在2025年来看,依旧是一个复杂且不断演进的法律议题,并没有一个简单的“是”或“否”的答案。核心在于,目前主流的法律实践和司法判例倾向于认为,纯粹由AI自主…

    2026年9月27日 • 用户投稿
    000
  • 怎么用豆包AI帮我转换编程语言 3分钟学会用AI实现代码语言自动转换

    怎么用豆包AI帮我转换编程语言 3分钟学会用AI实现代码语言自动转换怎么用豆包AI帮我转换编程语言 3分钟学会用AI实现代码语言自动转换怎么用豆包AI帮我转换编程语言 3分钟学会用AI实现代码语言自动转换怎么用豆包AI帮我转换编程语言 3分钟学会用AI实现代码语言自动转换

    豆包ai实现代码语言自动转换的方法如下:1. 准备好原始代码并明确标注目标语言,确保代码无语法错误且功能清晰;2. 使用豆包ai的对话功能进行提问,粘贴代码并准确描述转换需求,避免模糊指令;3. 检查转换后的代码是否可用,通过通读、运行测试用例及对比行为差异进行验证,如有问题可继续向ai反馈修改。 …

    2026年9月27日 • 用户投稿
    000
  • linux怎么打开某个端口

    linux怎么打开某个端口linux怎么打开某个端口linux怎么打开某个端口linux怎么打开某个端口

    在 Linux 中打开端口有三种方法:使用 UFW 防火墙(方法 1)、使用 iptables 命令(方法 2)、使用 iptables-save 和 iptables-restore 命令(方法 3)。UFW 适合 Ubuntu 发行版,而 iptables 命令则功能强大且通用,手动编辑配置文件…

    2026年9月27日 • 用户投稿
    100
  • win8如何设置文件共享_Win8文件共享设置教程

    win8如何设置文件共享_Win8文件共享设置教程win8如何设置文件共享_Win8文件共享设置教程win8如何设置文件共享_Win8文件共享设置教程win8如何设置文件共享_Win8文件共享设置教程

    首先启用网络发现和文件共享,将网络类型设为家庭或工作网络,并在高级共享设置中开启相应选项;接着右键目标文件夹,通过“共享”选项卡启用共享并设置Everyone权限;可选创建或加入家庭组以自动共享库内容;最后在“安全”选项卡中为Everyone配置NTFS权限,确保远程访问正常。 如果您在局域网中尝试…

    2026年9月27日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信