玩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
A:刚发现一个好办法,十分简单,在任务管理器-processes里,右键点击某个进程,选Set Affinity,设定运行在某个核心上就可以了。
半个多月前CCL上有个人问windows下有没有类似linux下taskset这样设定CPU Affinity的方法,刚刚把这个方法给他回复了。