编程让任务管理器中CPU占有率呈现正弦曲线

来源:互联网 发布:技改大修预算软件 编辑:程序博客网 时间:2024/05/16 03:26

《编程之美》的第一个问题:如何编程让任务管理器中CPU占有率呈现正弦曲线,博主尝试了一下,得到如图的结果。

博主写出的代码如下所示:

#include <stdio.h>#include <stdlib.h>#include <math.h>#include <Windows.h>const double PI = 3.1415926;const int FREQUENCY = 360;const int AMPLITUDE = 100;int main(){printf("Sine usage of CPU\n");double dPiece = 2*PI / FREQUENCY;DWORD dwWork, dwTick;while(true){for( int i = 0; i < FREQUENCY; i++ ) {dwTick = GetTickCount();dwWork =(DWORD)(AMPLITUDE * (sin(dPiece * i) + 1));while(GetTickCount() - dwTick <= dwWork);Sleep(2*AMPLITUDE - dwWork);}}return 0;}

在确定必每次循环的时间段(AMPLITUDE)时,需要考虑下面两个因素:

(1)任务管理器刷新间隔默认为2秒,但采样间隔远比它小,估计是400毫秒左右。当你将Update Speed从Normal调成High之后,采样频率还会进一步提高。

(2)要是将每次循环的时间段设得太小,使线程睡眠时间小于10毫秒,会造成相当大的误差,因为线程的睡眠、唤醒是比较费时的。

综合上述两点,在默认设置下,将AMPLITUDE设为100毫秒是比较合适的。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 自热米饭不熟怎么办 孕妇用了微波炉怎么办 蛋挞变软了怎么办 外卖炒面坨了怎么办 手机发热充电慢怎么办 饭盒盖子松了怎么办 饭盒盖子盖不住怎么办 饭盒盖子吸不住怎么办 饭盒盖子变形了怎么办 饭盒盖子凹进去怎么办 饭盒盖吸不住怎么办 饭盒微波炉加热后打不开怎么办 微波炉加热饭盒打不开怎么办 塑料饭盒加热后打不开怎么办 真空锅锅盖打不开怎么办 玻璃真空水壶打不开怎么办 保温饭盒盖子打不开怎么办 饭盒盖章松了怎么办 电压力锅卡住了怎么办 铁的饭盒打不开怎么办 微波炉饭盒盖子打不开怎么办 微波炉盖子吸住了怎么办 剩下的糯米饭怎么办 饭盒微波加热打不开怎么办 微波炉触屏不灵怎么办 微波炉旋钮坏了怎么办 微波炉蒸馒头硬怎么办 小猫两天不吃饭怎么办 减肥吃了巧乐兹怎么办 孕妇吃了点蟹籽怎么办 做寿司没有肉松怎么办 做寿司没有海苔怎么办 孩子不爱吃早餐怎么办 早上不想吃早餐怎么办 早上来不及吃早餐怎么办 早餐吃撑了怎么办 减肥吃撑了怎么办 哺乳吃爆米花了怎么办 干吃方便面后怎么办 吃了牛奶上火怎么办 绿豆糕吃多了怎么办