编程之美(1)

让cpu占用率听你指挥

Posted by LQ on June 29, 2017

题目描述

写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:

  1. CPU的占用率固定在50%,为一条直线;
  2. CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1-100);
  3. CPU的占用率状态是一个正弦曲线。

思路

1.任务管理器大约1S钟更新一次 2.让它在任务管理器的刷新周期内一会儿忙,一会儿闲,通过调节忙/闲比例,控制CPU占用率

//解法一:执行空循环96000000次,选9600000
//的原因是因为假设这段代码运行的CPU是P4 
//2.4Ghz,现代CPU每个时钟周期可以执行两条
//以上的代码,我们取平均值两条,于是就有(
//2400000000*2)/5=960000000,也就是说CPU1 
//秒可以运行这隔循环960000000次,但我们不能简单的将CPU工作1s,再休息1s,波形很可能就是锯齿状的,我们尝试减低两个数量级,因为10ms是因为比较接近windows的调度时间片。
public class CPUTest {  
    public static void main(String[] args) throws Exception{  
        for (;;) {  
            for (int i = 0; i < 96000000; i++) {  
                ;  
            }  
            Thread.sleep(10);  
        }  
    }  
}  

–未完待续