玩windows任务管理器CPU占用率曲线

玩windows任务管理器CPU占用率曲线

文/Sobereva   写于2008年


以前听说邹某《编程之美》那书里说过,微软面试的一个考题是如何让CPU占用率保持50%,前几天夜里自己编了个并且很容易就实现了,发现和正确答案非常像。然后我又加了几句,让之呈锯齿形波动


下载地址/usr/uploads/file/20150602/20150602213422_37162.rar

运行时最好别开其它占用CPU资源的程序,否则不好看。查看-更新速度,要选择“标准”。启动之后,打开任务管理器观看就行了


源代码
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <windows.h>

using namespace std;

int main()
{
int busytime=100,scale=0,b=1;
int idletime=busytime;

__int64 starttime=0;

while(1)
{
starttime=GetTickCount();
while( GetTickCount()-starttime <=busytimescale ) { }
Sleep( busytime
(10-scale) );
scale=scale+b;
if (scale==10||scale==0) {b=-b;}
}

return 0;
}




再修改修改,得到了正弦曲线。不过只是0-180度范围的。


源代码如下
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <windows.h>
#include <math.h>

using namespace std;

int main()
{
double scale=0;
double x=0,b=0;

__int64 starttime=0;

while(1)
{
starttime=GetTickCount();
while( GetTickCount()-starttime <=2000scale ) { }
Sleep( 2000
(1-scale) );

x=b/36023.1415926;
b=b+2;if (b>=180) {b=0;x=0;}
scale=sin(x);
}

return 0;
}




下载地址/usr/uploads/file/20150602/20150602213248_21714.rar



[原论坛中有人回帖提问]Q:能不能单独控制某个核呢?

A:刚发现一个好办法,十分简单,在任务管理器-processes里,右键点击某个进程,选Set Affinity,设定运行在某个核心上就可以了。

半个多月前CCL上有个人问windows下有没有类似linux下taskset这样设定CPU Affinity的方法,刚刚把这个方法给他回复了。