控制你的CPU占用率,读编程之美第一章的一点总结

本文介绍了如何通过编程控制Windows任务管理器的CPU占用率,包括固定在50%、自定义占用率以及模拟正弦曲线。文章讨论了单线程、双线程以及C#和C++实现的方法,并涉及线程亲和性和使用PerformanceCounter进行监控。
摘要由CSDN通过智能技术生成

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

1.    CPU的占用率固定在50%,为一条直线;

2.    CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100);

3.    CPU的占用率状态是一个正弦曲线。

首先,什么是CPU占用率真?《编程之美》写道:“在任务管理器的一个刷新周期内,CPU忙(执行应用程序)的时间和刷新周期总时间的比率,就是CPU的占用率,也就是说,任务管理器中显示的是每个刷新周期内CPU占用率的统计平均值。”

书中提到了多种方法 ,前面几种简单的都是对应单核CPU的。

第一种是通过CPU的主频计算出在一秒种内CPU能运行的空循环次数,再调节忙/闲的时间比(闲时间设为10ms,使接近于系统调度的时间片),此法在双核CPU上运行看不到任何效果。

第二法方法用到了GetTickCount来获取“系统从启动到现在”经历的毫秒值,通过统计的方法来调节时间比。

using System;
using System.Text;
using System.Threading;

namespace _50persentCPU
{
    class Program
    {
        static void Main(string[] args)
        {
            int  busyTime = 10;
            int  startTime = Environment.TickCount;
            Console.WriteLine(startTime .ToString ());
            while (true)
            {
                 startTime = Environment.TickCount;
                while (Environment.TickCount - startTime <= busyTime)
                {
                    //Console.WriteLine(Environment.TickCount.ToString());
                }
                Thread.Sleep(10);
            }
        }
    }
}

程序运行截图1:

单线程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值