昨天在bbs上淘到了这本编程之美。顺手刷了第一章,很有意思。第一章的要求是要控制CPU曲线,绘制出对应的形状。

拿到这个问题,我的第一反应是, 是不是有这么一个API,能在任务管理器上的对应区域直接绘制图形呢? 然后就去查找API, 可惜搜索能力不行,最终还是没有找到。

然后看书上的解释, 太棒了。


解决这道题目的核心是。 CPU占用率的概念,应该是指 CPU忙的时间与总时间的比,他是一个平均值的概念。也就是说。通过控制CPU忙闲时间的比值,我们能够大致控制CPU的占用率。


通过这个思想能够 控制CPU绘制各种我们想要的图形 >_<

方波



sin波



直线

源代码例如以下:

// ==================【控制cpu曲线】=================
// @ author : zhyh2010
// @ date : 20150609
// @ version : 1.0
// @ description : 核心: 在任务管理器的一个刷新周期内
// CPU 忙的时间 和 刷新时间的比率就是 CPU 的占用率
// CPU 显示的实际仅仅是一个平均值
// ================【end of 控制cpu曲线】=============== #include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <math.h> // void busy1()
// {
// for (int i = 0; i != 10; i++)
// {
// system("start calc");
// }
// system("taskkill /f /im calc.exe");
// printf("busy\n");
// } void DrawSin()
{
system("title sin");
const float PI = 3.1415926535;
const int count = 360;
const int GAP = 1;
const DWORD totalTime = 200; float x = 0;
float ratio[count] = { 0 };
for (int i = 0; i != count; i++, x += GAP)
ratio[i] = 0.5 * sin(PI * x / 180.0); for (int i = 0; TRUE; i = (i + 1) % count)
{
DWORD startTime = GetTickCount();
while (GetTickCount() - startTime < (0.5 + ratio[i]) * totalTime);
Sleep((0.5 - ratio[i]) * totalTime);
} } void DrawLinear(float ratio = 0.9)
{
system("title drawline");
const DWORD totalTime = 200;
while (true)
{
DWORD startTime = GetTickCount();
while (GetTickCount() - startTime < ratio * totalTime);
Sleep((1 - ratio) * totalTime);
}
} void DrawSquareWave(float max = 0.9, float min = 0.1)
{
system("title squareWave");
const DWORD totalTime = 200;
const int count = 300; for (int i = 0; TRUE; i = (i + 1) % count)
{
float ratio = (i > count / 2) ? max : min; DWORD startTime = GetTickCount();
while (GetTickCount() - startTime < ratio * totalTime);
Sleep((1 - ratio) * totalTime);
}
} void main()
{
// ===============【设置进程所在cpu】=================
SetProcessAffinityMask(GetCurrentProcess(), 1);
DrawLinear();
//DrawSin();
//DrawSquareWave();
}

參考文章

编程之美:让CPU占用率曲线听你指挥

编程之美 之 让CPU占用率听你指挥的更多相关文章

  1. Shell编程检测监控mysql的CPU占用率

    shell编程很强大! 网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务.由于这种事具有不 ...

  2. 编程之美_1.1 让CPU占用率曲线听你指挥

    听到有人说让要写一个程序,让用户来决定Windows任务管理器的CPU占用率. 觉得很好奇.但第一个想法就是写个死循环.哈哈.不知道具体的占用率是多少,但至少能保证在程序运行时,CPU的占用率终会稳定 ...

  3. 编程之美读书笔记1.1——让CPU占用率曲线听你的指挥

    http://blog.csdn.net/pipisorry/article/details/36189155 <strong><span style="font-size ...

  4. 《编程之美》学习笔记——指挥CPU占用率

    问题: 写一个程序.让用户来决定Windows任务管理器(Task Manager)的CPU占用率(单核). 有下面几种情况: 1.CPU占用率固定在50%,为一条直线 2.CPU的占用率为一条直线, ...

  5. 让cpu占用率曲线听你指挥(多核处理器)

    编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器) [版权声明]转载请注明出处 http://www.cnblogs.com/TenosDoIt/p/3242910.html  [目录] 不考 ...

  6. shell脚本检测监控mysql的CPU占用率

    网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法 就是重启mysql服务.由于这种事具有不可预见性,我们不知道什 ...

  7. 浅析 Pycharm 内存、cpu 占用率

    浅析 Pycharm  内存.cpu 占用率 本机配置参数: ------------------------------------------ Windows 10 专业版   X64 ----- ...

  8. liteos CPU占用率(十六)

    1. 概述 1.1 基本概念 CPU(中央处理器, Central Processing Unit)占用率可以分为系统CPU占用率和任务CPU占用率两种. 系统CPU占用率(CPU Percent)是 ...

  9. 查看Windows下引起Oracle CPU占用率高的神器-qslice

    前言: qslice是一个win2000的工具包,能分析进程的cpu占用率,我们用于分析oracle的性能 这是绿色的软件无需安装. 我们经常会碰到oracle的CPU占用居高不下,无法快速定位到问题 ...

随机推荐

  1. ftp上传文件、删除文件、下载文件的操作

    FavFTPUtil.Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...

  2. C# 如何正确删除List中的item

    参考博客 https://blog.csdn.net/Le_Sam/article/details/75633737 https://www.cnblogs.com/hedianzhan/p/9130 ...

  3. CQOI2018 九连环 打表找规律 fft快速傅里叶变换

    题面: CQOI2018九连环 分析: 个人认为这道题没有什么价值,纯粹是为了考算法而考算法. 对于小数据我们可以直接爆搜打表,打表出来我们可以观察规律. f[1~10]: 1 2 5 10 21 4 ...

  4. openwrt vsftp

    vsftp: very security ftp openwrt配置:make menuconfig  ==> network ==> file transfer ==> vsftp ...

  5. 专访Vue作者尤雨溪:Vue CLI 3.0重构的原因

    1.为什么要对 Vue CLI 进行大规模修改? 尤雨溪认为旧版本的 Vue CLI 本质上只是从 GitHub 拉取模版,这种拉模版的方式有几个问题: (1) 在单个模版里面同时支持太多选项会导致模 ...

  6. Python的Turtle绘制纳兹咩的娘口三三

    今天看完夏目友人帐的大电影,哭成了泪猴~ 所以我打算用Python画一只娘口三三陪伴在我身边 不过.. 画的太丑,还没上色..,你们可以完善一下~ 代码放在这里了 import turtle as t ...

  7. 生成优惠券,并将优惠券存入Mysql

    #coding:utf-8 import random import string import MySQLdb def gen_charint(filename, width =4, num=5): ...

  8. Python之 七级字典查询

    # -*- coding:utf- -*- # 作业要求: # 打印直辖市,省,市,县,区,街道五级菜单: # 可以一层一层地进入到所有层 # 可以退出到上一层 # 可随时退出程序 mapChina ...

  9. Coreldraw绘制标准波浪线

    Coreldraw中如何绘制标准波浪线? 先画一根直线,单击工具栏中的“互动式工具组”,选择“互动式变形工具”, 再在弹出的属性栏中选择“拉链变形”,在幅度和频率中分别输入波形的波峰 到波底的值.波浪 ...

  10. POJ2421 Constructing Roads

    Constructing Roads 这道题很水,就是一个裸的最小生成树,最不过把已经连接的节点的值再设为0. 代码: #include<cstdio> #include<cstri ...