《编程之美》里边有个讲控制CPU占用率曲线的例题,里面讲到使用perfmon工具来帮助我们实现控制CPU占用率曲线的功能。
perfmon工具可以监控系统的各个系能参数,在.NET Framework中也提供了操作perfmon的相应类。我们只要根据需要取得实例句柄进行操作就行。(注意,因为perfmon是一个程序实例,我们不能直接用new来实例化一个对象。)
关于perfmon的知识,在MSDN上有很多讲解和实例。下面是一个根据用户输入控制CPU占用率曲线的程序。
#include <iostream>
#include <windows.h>
#using <System.dll>
using namespace std;
using namespace System::Diagnostics;
void MakeUsage(float level)
{
PerformanceCounter^ temp = gcnew PerformanceCounter("Processor", "% Processor Time", "_Total"); // 注意,不能用new,因为这是一个引用类型。再者,这是个计数器。
while(true)
{
if(temp->NextValue() > level)
{
Sleep(10);
}
}
}
int main()
{
float level(0);
cin >> level;
MakeUsage(level);
return 0;
}
编译运行程序,输入cpu占用率水平,运行perfmon可查看到。
如输入:50
备注:
编译程序前,要添加公共语言运行库属性,不然会出现“fatal error C1190: 托管目标代码需要“/clr”选项”的错误。