CPU占用率控制-编程之美初学者参考文档 1.1(上)
此文档的目的是帮助更多初学《编程之美》的Programmers少走弯路,致力于顺藤摸瓜。笔者也是一名编程初学者。实际编写中时有重新发明轮子的行为,并已患上重度查询文档症。精巧的算法往往伴随生僻的知识点,究其根本,结合编程之美具体实现,在此汇总发布。因水平所限,如有缺漏以及不严谨之处,请各位多多指教。
Point 1:
DWORD busySpan[COUNT];
//DWORD 代表 unsigned long
DWORD代表unsigned long,在WINDEF.H中被定义,定义如下:
typedef unsigned long DWORD
此处注意:
32位编译器下int为4个字节,unsigned long为4个字节
64位编译器下int为4个字节,unsigned long为8个字节
所以,unsigned long会跟随系统环境变化而变化
Point2:
关于Windows.h头文件内函数的解释:
此处引入 空天遮阳伞 的文章,写的很精辟。
https://blog.csdn.net/zhanshen112/article/details/80379731
在这里我们注意12页的函数:
1.Sleep()
在一段时间内挂起
Sleep()里面的单位,是以毫秒为单位,例如:sleep(1000)意义为使函数挂起1s。
用法:
unsigned sleep(unsigned 毫秒);
2.WaitForSingleObject()
自己停下来,等待某个事件发生。
在某一线程中调用该函数时,线程暂时挂起,如果在挂起的dwMilliseconds毫秒内,线程所等待的对象变为有信号状态,则该函数立即返回;如果超时时间已经到达dwMilliseconds毫秒,但hHandle所指向的对象还没有变成有信号状态,函数照样返回。
典型结构:
DWORD WINAPI WaitForSingleObject(
__in HANDLE hHandle;//hHandle could be a series of objects like Event、Job、notifications..etc..
__in DWORD dwMilliseconds;
);
假设我们现在启动计算器程序,然后等待程序结束。可以这样写:
CString strCommand="";
STARTUPINFO sinfo = {sizeof(sinfo)};
PROCESS_INFORMATION pi;
CHAR cWindowsDir[MAX_PATH];
CHAR cCommand[MAX_PATH];
GetWindowsDirectory(cWindowsDir,MAX_PATH); // 获取系统目录
strCommand= (CString)cWindowsDir+"//Calculator.exe";
strcpy(cCommand,strCommand); // 得到计算器的程序路径
BOOL TextUp = CreateProcess(NULL,cCommand,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);if (TextUp)
{if (!WaitForSingleObject(pi.hProcess,INFINITE))// 等待计算器关闭AfxMessageBox(" 计算器已经关闭!");
}
3.GetTickCount()
典型结构:
DWORD GetTickCount(void)
返回从操作系统启动所经过的毫秒数,返回值类型是DWORD。
此函数来自winbase.h. ,定义如下:
WINBASEAPI
DWORD
WINAPI
GetTickCount(VOID);
具体使用不作例举。
4.QueryPerformanceFrequency() 与 QueryPerformanceCounter()
QueryPerformanceFrequency()
检索性能计数器的频率。性能计数器的频率在系统引导时是固定的,并且在所有处理器中都是一致的。因此,只需在应用程序初始化时查询频率,并且可以缓存结果。好处在于,兼容各种不同型号的CPU,且大部分硬件都支持。注意,虽然返回值为BOOL,但在运行XP或更高版本的系统上,该函数将始终成功,因此永远不会返回0。
典型结构:
BOOL WINAPI QueryPerformanceFrequency(_Out_ LARGE_INTEGER *lpFrequency
);
lpFrequency [out]是指向当前性能计数器频率的变量的指针,以 次数/s为单位。
//特别注意此处为 s,而不是ms。
QueryPerformanceCounter()
检索性能计数器的当前值,该值是一个高分辨率(精度<1us)的时间戳,可配合上面的 QueryPerformanceFrequency() 用于时间间隔测量。返回值为BOOL,同 QueryPerformanceFrequency() 函数,该函数在运行XP或更高版本的系统上,始终成功,于是返回的应该始终是非零值。
典型结构:
BOOL WINAPI QueryPerformanceCounter(_Out_ LARGE_INTEGER * lpPerformanceCount //lpPerformanceCount [out]是指向接收当前性能计数器值的变量的指针,以次数为单位。
);
这两个函数都在Winbase.h里,并已被包含于Windows.h .
本文档主要为个人实际操作与理解的基础上编写。
部分资料参考 中国最大同性交友社区-CSDN 前辈网友,在这里表示感谢。
参考文档Microsoft Windows DEV Center 的 文档库。
CPU占用率控制-编程之美初学者参考文档 1.1(上)相关推荐
- Linux 下杀毒软件 CPU 占用率为何持续升高?
作者 | beyondma 责编 | 张文 来源 | CSDN 博客 头图 | CSDN 下载自视觉中国 最近笔者遇到这样一个相对比较疑难的事件,某个在 Linux 下运行的杀毒软件启动后,在某些情 ...
- Linux 下杀毒软件 CPU 占用率为何持续升高
作者 | beyondma 责编 | 张文 来源 | CSDN 博客 头图 | CSDN 下载自视觉中国 最近笔者遇到这样一个相对比较疑难的事件,某个在 Linux 下运行的杀毒软件启动后,在某些情 ...
- 疑难杂症:Linux下杀毒软件CPU占用率为何持续升高
最近笔者遇到这样一个相对比较疑难的事件,某个在Linux下运行的杀毒软件启动后在,某些情况下CPU占用率会持续升高,而且在交易量较高的情况下极易复现.而奇怪的是我们之前已经对于杀毒软件的CPU使用率进 ...
- 让多核CPU占用率曲线听你指挥(Windows实现)——《编程之美》1.1学习笔记
让多核CPU占用率曲线听你指挥--<编程之美>1.1学习笔记 Problem: 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.有以下几种情况: ...
- 《编程之美》读书笔记23: 1.1 让CPU占用率曲线听你指挥
题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: 1. CPU的占用率固定在50 ...
- 编程之美读书笔记_1.1_让CPU占用率曲线听你指挥
题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: 1. CPU的占用率固定在50 ...
- linux mysql cpu 查看工具_Shell编程检测监控MySQL的CPU占用率
shell编程很强大!网站访问量大的时候MySQL的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务.由于这种事具有不可 ...
- 编程之美:让CPU占用率曲线听你指挥
题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: 1. CPU的占用率固定在50%, ...
- (1.5.1.1)编程之美:让CPU占用率曲线听你指挥
题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: 1. CPU的占用率固定在50%, ...
最新文章
- 06Decorator(装饰)模式
- JESD204B与LVDS接口并行 管线式ADC延迟问题分析及解答
- 你怎么得到git总是从特定的分支拉?
- ASP.net中的validaterequest
- 并发数据结构-1.1.2 阻塞技术
- POJ - 2002 Squares 数正方形【二分】【哈希表】
- 如何分析线程转储– IBM VM
- JBPM4.4整合SSH2项目
- Bootstrap 字体图标 Bootstrap Glyphicon Components
- python 参数_Python命令行参数(七)
- Linux nohup命令详解
- gt1151触摸驱动调试
- php网站登录界面验证码打不开,php网站无法显示验证码
- 程序猿来找找自己的目标
- allow php templates,PHP 返利网 自动返利支持多个电商网站 源码+程序
- 仿支付宝头像外加一个边框的工具类
- java版溺尸刷怪塔_minecraft河流群系溺尸刷怪塔存档
- 【Servlet】2:认识一下Web服务器——Tomcat
- MikTex + VS Code 配置教程
- Because an app is obscuring a permission request, Settings can't verify your response
热门文章
- 石头剪刀布游戏(Rock-Paper-Scissors)
- 四国军棋界面开发(4) 行棋规则和工兵路径
- MIPI LCD调试总结
- skynet服务的缺陷 lua死循环
- 2015春计算机应用技术基础,《计算机应用技术基础》.doc
- 浅谈数据治理、数据管理、数据资源与数据资产管理内涵及差异点(建议收藏)...
- Unity实现排行榜(PlayerPrefs)
- 浅谈codediff_Allione_新浪博客
- 苹果序列号/IMEI号查询--Api接口
- 无法安装以下功能 .net framework 3.5解决办法