• 玩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的方法,剛剛把這個方法給他回復了。
    久久精品国产99久久香蕉