现在的位置: 首页 > 综合 > 正文

编程之美 1.1、CPU占用率

2013年02月06日 ⁄ 综合 ⁄ 共 1075字 ⁄ 字号 评论关闭

Windows  API  :

Sleep();让线程停下来

GetTickCount();获取当前系统时间

PerformanceCounter();效能计数器

GetCPUTickCount();获取CPU核心运行周期数

GetProcessorInfo()/SetThreadAffinityMask();多核问题,控制CPU

timeGetSystemTime();获取高精度时间的方法。

WaitForSingleObject();自己停下来等待某件事情发生。

一、系统中只有当前实例在运行。CPU50% 。windows.h中有GetTickCount()函数,用于记录当前从系统中获取的时间。

 

#include<iostream>
#include<Windows.h>
using namespace std;
int main()
{
	const int busyTime=10;
	const int idleTime=busyTime;
	long int startTime=0;
	while (true)
	{
		 startTime=GetTickCount();
		while ((GetTickCount()-startTime)<=busyTime)
		{
			;
		}
		Sleep(idleTime);
	}
	return 0;
}

二、动态适应的方法、PerformanceCounter是效能计数器。多个进程占用CPU

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;//PerformanceCounter
using System.Threading;//PerformanceCounter
using System.Collections;//PerformanceCounter
namespace ConsoleApplication1
{
    class Program
    {
        static void MakeUsage(float level)
        {
            PerformanceCounter p = new PerformanceCounter("Processor", "% Processor Time", "_Total");
            while (true)
            {
                if (p.NextValue()>level)
                {
                    System.Threading.Thread.Sleep(10);
                    System.Console.Write("huahua\n");
                }
                
            }
        }
        static void Main(string[] args)
        {
            MakeUsage(20);
        }
    }
}

 

抱歉!评论已关闭.