這個最初是在microsoft的《編程之美》中看到的,用你的程序來控制CPU的使用率。
首先是要求寫一個用來實現CPU使用率為50%程序。
這個還是很好實現的,只要讓你的程序忙的時間課空閑時間對半就可以了。
這里主要要用到兩個函數:GetTickCount以及Sleep。
GetTickCount函數據我所知在2000版的msdn中是查不到的,不過功能很簡單,就是返回系統啟動到現在所經歷的毫秒數。
有了這個函數,就能夠較為准確的獲得一個程序運行時間,來控制程序的睡眠時間。
這個是實際效果圖:
這個圖片的效果就比較慘了,這個程序是我用來畫CPU正弦曲線,看這個圖片依稀能看出來點正弦的意思……
在家里的計算機畫的曲線還是有模有樣的,台式機,xp系統。如果你的電腦配置不錯,后台程序不多的話,把下面的代碼編譯運行效果應該也會不錯~
當然,如果你想要50%畫一條直線,就很簡單了,持續運行500ms,Sleep500ms就Ok啦。
另外需要注意的是,任務管理器的CPU曲線更新時間大約是1s,所以以1s為周期來進行CPU使用率的控制就可以了。
程序代碼:
1 #include <iostream> 2 #include <windows.h> 3 #include <cmath> 4 5 #define PI 3.14 6 using namespace std; 7 8 int main() 9 { 10 int starttime; 11 int busytime; 12 int sinval = 0; 13 while(1) 14 { 15 starttime = GetTickCount(); 16 busytime = (int)(500 * sin(float((sinval) %= 30) / 30 * 2 * PI)) + 500; 17 cout << busytime << endl; 18 sinval++; 19 while(GetTickCount() - starttime < busytime) 20 ; 21 Sleep(1000 - busytime); 22 } 23 return 0; 24 }
代碼很簡明,運行下吧~