运行控制[置顶] 有趣的编程----控制自己电脑的CPU
2013-04-23 20:17
197 查看
每日一贴,今天的内容关键字为运行控制
一、目题
:
写一个序程,让windows务任管理器中的CPU占用率表现为一条正弦函数曲线
。
1. 多CPU的解决办法
//让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处) SetProcessAffinityMask( GetCurrentProcess(), 0x00000001 //cpu mask );
忙
:
死环循
。
控制
闲
:
就寝
。
3. 通过算计CPU率频来控制CPU
#include <stdio.h> #include <stdlib.h> #include "windows.h" //控制CPU , 要需算计CPU运行时光 int main() { //让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处) SetProcessAffinityMask( GetCurrentProcess(), 0x00000001 //cpu mask ); for(;;) { //CPU 2.0GHZ 4核心 8线程 //算计方法: 2.0*10的9次方 , 现代CPU每一个时钟期周可以行执2条以上的代码 //2000 000 000*2/5=800 000 000 均平 for(int i=0;i<8000000;i++) ; Sleep(10);//10ms较比近接windows的调度时光片 } //system("PAUSE"); return 0; }
运行果效:
![](http://img.my.csdn.net/uploads/201304/23/1366708936_3939.png)
4. 通过GetTickCount()函数来设置时光间隔
#include <stdio.h> #include <stdlib.h> #include "windows.h" //控制CPU int main() { //让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处) SetProcessAffinityMask( GetCurrentProcess(), 0x00000001 //cpu mask ); int busyTime = 100; int idleTime = busyTime; int start = 0; while(true) { //用系统函数省去了CPU运行时光的预算 start = GetTickCount(); while((GetTickCount() - start) <= busyTime) ; //闲暇 Sleep(idleTime); } //system("PAUSE"); return 0; }
果效:
![](http://img.my.csdn.net/uploads/201304/23/1366709898_7298.png)
每日一道理
谁说人与人隔着遥远的重洋,谁说心与心设着坚固的堤防?十六岁的鸟儿飞上天空,总会找到落脚的枝头。
5. 画正弦函数
![](http://img.my.csdn.net/uploads/201304/23/1366710290_4458.png)
#include <Windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <tchar.h>
const double SPLIT = 0.01;
const int COUNT = 200;
const double PI = 3.14159265;
const int INTERVAL = 300; //间隔时光
//画出一条正弦曲线
int _tmain(int argc, _TCHAR* argv[])
{
//让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处)
SetProcessAffinityMask(
GetCurrentProcess(),
0x00000001 //cpu mask
);
//1. 设置忙与闲时的时光数组
DWORD busySpan[COUNT]; //array of busy times
DWORD idleSpan[COUNT]; //array of idle times
int half = INTERVAL / 2;
double radian = 0.0; //弧度
for(int i = 0; i < COUNT; i++)
{
//sin(x)的取值围范是[-1,1],为了整完表现,必须给它作些参数整调
busySpan[i] = (DWORD)(half + (sin(PI * radian) * half));
idleSpan[i] = INTERVAL - busySpan[i];
radian += SPLIT; //每次增一点点
}
//试测:输出忙与闲时的时光数组, 写入文件result.txt
FILE *fp;
fp = fopen("result.txt", "a+"); //a+示表追加式方
for(int i = 0; i < COUNT; i++)
{
//printf("busySpan[%d] is %d\n",i,busySpan[i]);
//printf("idleSpan[%d] is %d\n\n",i,idleSpan[i]);
fprintf(fp, "busySpan[%d] is %d\n" , i, busySpan[i]);
fprintf(fp, "idleSpan[%d] is %d\n\n" , i , idleSpan[i]);
}
fclose(fp);
//2. 画曲线
DWORD startTime = 0;
int j = 0;
while (true)
{
j = j % COUNT; //COUNT次为一个期周
startTime = GetTickCount();
while ((GetTickCount() - startTime) <= busySpan[j])
;
Sleep(idleSpan[j]);
j++;
}
return 0;
}
运行果效:
![](http://img.my.csdn.net/uploads/201304/23/1366710363_5862.png)
变改间隔时光
INTERVAL = 100
; 时可以应相使期周减小:
![](http://img.my.csdn.net/uploads/201304/23/1366710440_7317.png)
转载请注明出处:http://blog.csdn.net/xn4545945
文章结束给大家分享下程序员的一些笑话语录:
一位程序员去海边游泳,由于水性不佳,游不回岸了,于是他挥着手臂,大声求.救:“F1,F1!”
一、目题
:
写一个序程,让windows务任管理器中的CPU占用率表现为一条正弦函数曲线
。
1. 多CPU的解决办法
//让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处) SetProcessAffinityMask( GetCurrentProcess(), 0x00000001 //cpu mask );
2. 控制CPU的思绪
控制忙
:
死环循
。
控制
闲
:
就寝
。
3. 通过算计CPU率频来控制CPU
#include <stdio.h> #include <stdlib.h> #include "windows.h" //控制CPU , 要需算计CPU运行时光 int main() { //让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处) SetProcessAffinityMask( GetCurrentProcess(), 0x00000001 //cpu mask ); for(;;) { //CPU 2.0GHZ 4核心 8线程 //算计方法: 2.0*10的9次方 , 现代CPU每一个时钟期周可以行执2条以上的代码 //2000 000 000*2/5=800 000 000 均平 for(int i=0;i<8000000;i++) ; Sleep(10);//10ms较比近接windows的调度时光片 } //system("PAUSE"); return 0; }
运行果效:
![](http://img.my.csdn.net/uploads/201304/23/1366708936_3939.png)
4. 通过GetTickCount()函数来设置时光间隔
#include <stdio.h> #include <stdlib.h> #include "windows.h" //控制CPU int main() { //让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处) SetProcessAffinityMask( GetCurrentProcess(), 0x00000001 //cpu mask ); int busyTime = 100; int idleTime = busyTime; int start = 0; while(true) { //用系统函数省去了CPU运行时光的预算 start = GetTickCount(); while((GetTickCount() - start) <= busyTime) ; //闲暇 Sleep(idleTime); } //system("PAUSE"); return 0; }
果效:
![](http://img.my.csdn.net/uploads/201304/23/1366709898_7298.png)
每日一道理
谁说人与人隔着遥远的重洋,谁说心与心设着坚固的堤防?十六岁的鸟儿飞上天空,总会找到落脚的枝头。
5. 画正弦函数
![](http://img.my.csdn.net/uploads/201304/23/1366710290_4458.png)
#include <Windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <tchar.h>
const double SPLIT = 0.01;
const int COUNT = 200;
const double PI = 3.14159265;
const int INTERVAL = 300; //间隔时光
//画出一条正弦曲线
int _tmain(int argc, _TCHAR* argv[])
{
//让进程在指定理处器上运行(在第一个CPU上运行, 对多CPU的理处)
SetProcessAffinityMask(
GetCurrentProcess(),
0x00000001 //cpu mask
);
//1. 设置忙与闲时的时光数组
DWORD busySpan[COUNT]; //array of busy times
DWORD idleSpan[COUNT]; //array of idle times
int half = INTERVAL / 2;
double radian = 0.0; //弧度
for(int i = 0; i < COUNT; i++)
{
//sin(x)的取值围范是[-1,1],为了整完表现,必须给它作些参数整调
busySpan[i] = (DWORD)(half + (sin(PI * radian) * half));
idleSpan[i] = INTERVAL - busySpan[i];
radian += SPLIT; //每次增一点点
}
//试测:输出忙与闲时的时光数组, 写入文件result.txt
FILE *fp;
fp = fopen("result.txt", "a+"); //a+示表追加式方
for(int i = 0; i < COUNT; i++)
{
//printf("busySpan[%d] is %d\n",i,busySpan[i]);
//printf("idleSpan[%d] is %d\n\n",i,idleSpan[i]);
fprintf(fp, "busySpan[%d] is %d\n" , i, busySpan[i]);
fprintf(fp, "idleSpan[%d] is %d\n\n" , i , idleSpan[i]);
}
fclose(fp);
//2. 画曲线
DWORD startTime = 0;
int j = 0;
while (true)
{
j = j % COUNT; //COUNT次为一个期周
startTime = GetTickCount();
while ((GetTickCount() - startTime) <= busySpan[j])
;
Sleep(idleSpan[j]);
j++;
}
return 0;
}
运行果效:
![](http://img.my.csdn.net/uploads/201304/23/1366710363_5862.png)
变改间隔时光
INTERVAL = 100
; 时可以应相使期周减小:
![](http://img.my.csdn.net/uploads/201304/23/1366710440_7317.png)
转载请注明出处:http://blog.csdn.net/xn4545945
文章结束给大家分享下程序员的一些笑话语录:
一位程序员去海边游泳,由于水性不佳,游不回岸了,于是他挥着手臂,大声求.救:“F1,F1!”
相关文章推荐
- 有趣的编程----控制自己电脑的CPU
- 有趣的编程----控制自己电脑的CPU
- 技术三等奖:有趣的编程:控制自己电脑的CPU【评委点评】
- 有趣的编程----控制自己电脑的CPU
- 有趣的编程----控制自己电脑的CPU
- 用电脑控制手机,就像运行超级终端的方法,使用的是LINUX命令 可进行手机调试等
- 编程之美-控制CPU占用率曲线方法整理
- UBOOT命令怎么自己添加 嵌入式汇编控制cpu CACH
- [置顶] 自己动手从源代码手动安装Python -- 搭建服务器Python 运行环境
- 编程之美中CPU运行曲线题目
- 编程之美中CPU运行曲线题目(多核版本)
- 自己编的MFC应用程序可以在没有安装编译器的电脑上运行了
- 编程之美,JAVA控制CPU的使用率(2),完美曲线
- 控制线程在指定CPU上运行
- [置顶] JAVA元数据编程零接触 -- 实现简单的MVC跳转控制雏形
- C# 自己写了一个windows服务程序,运行时错误: 错误 1053: 服务没有及时响应启动或控制请求。(推荐)
- ARM:LED控制编程、电路原理、CPU数据手册、位运算、交叉编译
- [置顶] 用十年教会自己编程
- 拷贝别人的vs 工程或者源文件到自己电脑运行时出现,无法找到标准库函数头文件以及无法识别未命名的namespace std
- [置顶] 为自己写的单元测试组件写个运行界面: Pkg_Unit_Framework 控制台