编程之美-CPU占用率
来源:互联网 发布:音乐播放设备 知乎 编辑:程序博客网 时间:2024/05/24 02:37
CPU是4核,3.10GHz,废话不多说,上代码。
代码
#include <stdio.h>#include <math.h>#include <windows.h>/************************************************************************ 1.1 让CPU占用率曲线听你指挥************************************************************************//************************************************************************ CPU占用50%:解决方法一************************************************************************/void first(){ while (true) { for (double i = 0; i < 3 * pow(10.0, 5); i++); Sleep(10); }}/************************************************************************ CPU占用50%:解决方法二************************************************************************/void second(){ int busyTime = 10; int idleTime = busyTime; double startTime = 0; while (true) { startTime = GetTickCount(); while ((GetTickCount() - startTime) <= busyTime); Sleep(idleTime); }}/************************************************************************ 粗粒度实现CPU占用 percent% 需要微调************************************************************************/void third(int percent){ double busyTime = percent; double idleTime = 100-percent; double startTime = 0; while (true) { startTime = GetTickCount(); while ((GetTickCount() - startTime) <= busyTime); Sleep(idleTime); }}/************************************************************************ 绘制正弦曲线************************************************************************/void four(){ // 每次正弦曲线前进0.01*PI,则需要200次 const double SPLIT = 0.01; const int COUNT = 200; const double PI = 3.1415926; // 峰值300,峰底0 const int INTERVAL = 300; // 忙时和闲时 double busyTime[COUNT]; double idleTime[COUNT]; int half = INTERVAL / 2; double radian = 0.0; // 获得busyTime和idleTime for (int x = 0; x < COUNT; x++) { busyTime[x] = half + sin(radian*PI) * half; idleTime[x] = INTERVAL - busyTime[x]; radian += SPLIT; } double startTime = 0; int j = 0; while (true) { j = j % COUNT; startTime = GetTickCount(); while (GetTickCount()-startTime <= busyTime[j]); Sleep(idleTime[j]); j++; }}int main(int argc, char *argv[]){ SYSTEM_INFO info; // 调用API函数来获取计算机硬件的信息 GetSystemInfo(&info); // cpu核数 //printf("dwNumberOfProcessors : %d\n",info.dwNumberOfProcessors); DWORD dwThreadId; HANDLE hThread = NULL; int coreNum = info.dwNumberOfProcessors; for(int i = 0 ; i < coreNum ; i ++) { // 针对third函数 如果是其他三个 hThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)first,0 ,0,&dwThreadId); hThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)third,(LPVOID)20,0,&dwThreadId); // 针对cpu核i(from 0) SetThreadAffinityMask(hThread,1<<i); } // 传入INFINITE表示无限等待 WaitForSingleObject(hThread, INFINITE); return 0;}
效果图
50%CPU占用
粗粒度任意CPU占用率
正弦曲线
0 0
- 编程之美-CPU占用率
- 读编程之美:CPU占用率
- 编程之美 1.1、CPU占用率
- 使cpu占用率50% --《编程之美》
- 编程之美——CPU占用率
- 编程之美——CPU占用率
- 《编程之美》读书笔记-CPU占用率
- 编程之美 之 让CPU占用率听你指挥
- 编程之美 - 让CPU占用率曲线听你指挥
- 《编程之美》学习笔记--控制CPU占用率
- 编程之美:让CPU占用率曲线听你指挥
- 编程之美:让CPU占用率曲线听你指挥
- 编程之美——CPU占用率曲线
- 编程之美_003让CPU占用率划出一条直线
- 编程之美-1.1、cpu占用率保持到50%
- 编程之美:让CPU占用率曲线听你指挥
- 编程之美:让CPU占用率曲线听你指挥
- 编程之美:让CPU占用率曲线听你指挥
- qemu-kvm代码分析
- apache 笔记
- 嵌入式软件开发培训笔记——c编程基础
- AutoCompleteTextView输入两个字符后才给提示列表
- jQuery,javascript获得网页的高度和宽度
- 编程之美-CPU占用率
- Android】loadData与loadDataWithBaseURL的区别
- Android studio gradle 更新依赖包,xml不提示
- Unity3D默认的快捷键。
- Serializable 作用
- 心累比身体之累更可怕
- 个人做题资源打包
- showdiv 的用法
- I/O处理与进程控制