使程序占用CPU稳定在一个输入值(linux系统)

《编程之美》是基于windows系统的,而我使用的是ubuntu,所以在完成这道题的时候使用的是linux系统
1. top–>查询当前cpu运行状态
2. cat /proc/cpuinfo –>主机的cpu信息

/*
 * 编程改变cpu占用率
 * StoryMonster 2016/7/15
 */

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main(int argc,char** argv)
{
    //argv保存希望维持的cpu占用率
    //cpu占用率 = 程序在一个cpu刷新周期内busy时间/cpu刷新周期
    //通过对本机的研究发现:本机每次cpu刷新时间为3秒
    //但是为了近可能地适用于更多主机,所以本例使用1秒为周期
    int busy = atoi(argv[1]);
    busy = busy*1000/100;
    int relax = 1000-busy;
    while(true)
    {
        usleep(relax*1000);                 //usleep使进程挂起relax*1000 微妙
        double tim1 = clock();              //通过此例验证:clock返回时间单位为纳秒
        double tim2 = clock();
        while(tim2 - tim1 < busy*1000) tim2 = clock();
    }
    return 0;
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章