zoukankan      html  css  js  c++  java
  • 运行控制[置顶] 有趣的编程控制自己电脑的CPU

    每日一贴,今天的内容关键字为运行控制

        一、目题

        :

        写一个序程,让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; }

        运行果效:

        

        

        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; }

        果效:

        

        每日一道理
    谁说人与人隔着遥远的重洋,谁说心与心设着坚固的堤防?十六岁的鸟儿飞上天空,总会找到落脚的枝头。

        

        5. 画正弦函数

        

        

        #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; }

        运行果效:

        

        变改间隔时光

        

        INTERVAL = 100

        

        ; 时可以应相使期周减小:

        

        

        转载请注明出处:http://blog.csdn.net/xn4545945  

        

    文章结束给大家分享下程序员的一些笑话语录: 一位程序员去海边游泳,由于水性不佳,游不回岸了,于是他挥着手臂,大声求.救:“F1,F1!”

  • 相关阅读:
    Windows 科研软件推荐
    有关Python 包 (package) 的基本知识
    《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记
    Coursera助学金申请模板
    《Using Databases with Python》 Week2 Basic Structured Query Language 课堂笔记
    Jupyter 解决单个变量输出问题
    解决 pandas 中打印 DataFrame 行列显示不全的问题
    《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记
    缓存击穿及解决方案
    jvm垃圾收集器
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3038718.html
Copyright © 2011-2022 走看看