玩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的方法,剛剛把這個方法給他回復了。