TThread::GetCPUUsage - C++ Builder

C++ Builder 参考手册 ➙ TThread ➙ GetCPUUsage


头文件:#include
命名空间:System::Classes
类:TThread
访问权限:public:
函数原型:

static int __fastcall GetCPUUsage(TSystemTimes &PrevSystemTimes);

System::Classes::TThread::GetCPUUsage 是 System::Classes::TThread 的静态成员函数,获取 CPU 使用率。

参数:

PrevSystemTimes:上一次获取 CPU 使用率的值,可以用 GetSystemTimes 获取初始值。

返回值:

CPU 使用率,0 ~ 100 的整数值。

  • 获取 CPU 使用率,需要先用 GetSystemTimes 获取初始值,然后每次调用 GetCPUUsage 函数,都会得到与获取初始值的时刻或与上一次调用这个函数的时刻之间的 CPU 使用率;
  • GetCPUUsage 函数内部也是调用 GetSystemTimes 获取 CPU 使用率所需的数据,通过两次 GetSystemTimes 获取的数据计算出这两个获取数据时刻之间的 CPU 使用率。

例子:实时获取和显示 CPU 使用率。

  1. 在 Form1 上:
    放一个 TTimer 定时器控件 Timer1,用于每隔 1 秒刷新一次 CPU 使用率的值;
    放一个 TProgressBar 进度条控件 ProgressBar1,用于显示 CPU 使用率;
    放一个 TLabel 文字的控件 Label1 用于显示 CPU 使用率的值;
在 Form1 上放控件 Timer1、ProgressBar1 和 Label1
  1. 在 Form1 头文件的 TForm1 类的 private: 里面添加变量:
private:
    TThread::TSystemTimes SysTms;
在头文件的 TForm1 类的 private: 里面添加变量
  1. 在 TForm1 的构造函数里面给 SysTms 赋初始值;
    在 Timer1 的 OnTimer 事件里面刷新显示 CPU 使用率:
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    TThread::GetSystemTimes(SysTms);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    int iCPUUsage = TThread::GetCPUUsage(SysTms);
    ProgressBar1->Position = iCPUUsage;
    Label1->Caption = UnicodeString().sprintf(L"%d%%", iCPUUsage);
}

运行结果:

实时刷新显示 CPU 使用率的运行结果

参考:

  • System::Classes::TThread::GetSystemTimes
  • System::Classes::TThread::TSystemTimes
  • System::Classes::TThread::IsSingleProcessor
  • System::Classes::TThread::ProcessorCount
  • System::Classes::TThread
  • System::TObject
  • VCL 类继承关系

C++ Builder 参考手册 ➙ TThread ➙ GetCPUUsage

你可能感兴趣的:(TThread::GetCPUUsage - C++ Builder)