在《編程之美》上面,作者給的解法考慮到了其他程序對cpu的佔用而影響最終曲線形狀的問題。作者調用了windows的API,而我的系統是linux系統,沒有圖形化的界面可顯示cpu運行曲線,所以我就省力只打印此程序的cpu佔用情況,然後根據此程序的cpu佔用值驗證程序的正確性。
/*
* 使cpu的運行圖像向一條正弦曲線
* StoryMonster 2016/7/15
*/
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
int main()
{
const double pi = 3.1415926;
//本例中將一個正弦週期等分爲20,使每一個時間常量爲2*pi/20;
unsigned int currentTimeCount = 0;
while(true)
{
unsigned int busy = sin(currentTimeCount*2*pi/20)*500 + 500;
unsigned int relax = 1000 - busy;
usleep(relax*1000);
clock_t tim1 = clock();
clock_t tim2 = clock();
while(tim2 - tim1 < busy*1000) tim2 = clock();
currentTimeCount++;
if(currentTimeCount==20) currentTimeCount = 0;
}
return 0;
}