CPU使用率
2016-01-19 14:24
148 查看
定义静态this指针 :static C任务管理器Dlg * m_this;
在构造函数之前初始化 :C任务管理器Dlg * C任务管理器Dlg::m_this = nullptr;
在构造函数里赋值: m_this = this;
之后可以用m_this调用类中任何变量。
创建线程设置CPU: CreateThread(0, 0, SetCPU,0, 0, 0);
回调函数:
DWORD WINAPI
C任务管理器Dlg::SetCPU( LPVOIDlpThreadParameter )
{
//第一次获取CPU时间
FILETIME
idleTime, kernelTime, userTime;
GetSystemTimes(&idleTime,
&kernelTime, &userTime);
//创建内核对象,等待1000ms
HANDLE
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
WaitForSingleObject(hEvent,
1000);
//第二次获取CPU时间
FILETIME
preidleTime, prekernelTime, preuserTime;
GetSystemTimes(&preidleTime,
&prekernelTime, &preuserTime);
double IdleTime =
(double)(idleTime.dwHighDateTime*4.294967296E9)
+ (double)(idleTime.dwLowDateTime);
double KernelTime =
(double)(kernelTime.dwHighDateTime*4.294967296E9)
+ (double)(kernelTime.dwLowDateTime);
double UserTime =
(double)(userTime.dwHighDateTime*4.294967296E9)
+ (double)(userTime.dwLowDateTime);
double preIdleTime =
(double)(preidleTime.dwHighDateTime*4.294967296E9)
+ (double)(preidleTime.dwLowDateTime);
double preKernelTime =
(double)(prekernelTime.dwHighDateTime*4.294967296E9)
+ (double)(prekernelTime.dwLowDateTime);
double preUserTime =
(double)(preuserTime.dwHighDateTime*4.294967296E9)
+ (double)(preuserTime.dwLowDateTime);
//计算CPU使用率
int CPUUseage =
(int)(100.0 - (preIdleTime - IdleTime)
/ (preKernelTime - KernelTime + preUserTime - UserTime)*100.0);
CString CPU;
CPU.Format(_T("%d%%"),
(CPUUseage));
m_this->m_CPU.SetWindowText(CPU);
return 0;
}
在构造函数之前初始化 :C任务管理器Dlg * C任务管理器Dlg::m_this = nullptr;
在构造函数里赋值: m_this = this;
之后可以用m_this调用类中任何变量。
创建线程设置CPU: CreateThread(0, 0, SetCPU,0, 0, 0);
回调函数:
DWORD WINAPI
C任务管理器Dlg::SetCPU( LPVOIDlpThreadParameter )
{
//第一次获取CPU时间
FILETIME
idleTime, kernelTime, userTime;
GetSystemTimes(&idleTime,
&kernelTime, &userTime);
//创建内核对象,等待1000ms
HANDLE
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
WaitForSingleObject(hEvent,
1000);
//第二次获取CPU时间
FILETIME
preidleTime, prekernelTime, preuserTime;
GetSystemTimes(&preidleTime,
&prekernelTime, &preuserTime);
double IdleTime =
(double)(idleTime.dwHighDateTime*4.294967296E9)
+ (double)(idleTime.dwLowDateTime);
double KernelTime =
(double)(kernelTime.dwHighDateTime*4.294967296E9)
+ (double)(kernelTime.dwLowDateTime);
double UserTime =
(double)(userTime.dwHighDateTime*4.294967296E9)
+ (double)(userTime.dwLowDateTime);
double preIdleTime =
(double)(preidleTime.dwHighDateTime*4.294967296E9)
+ (double)(preidleTime.dwLowDateTime);
double preKernelTime =
(double)(prekernelTime.dwHighDateTime*4.294967296E9)
+ (double)(prekernelTime.dwLowDateTime);
double preUserTime =
(double)(preuserTime.dwHighDateTime*4.294967296E9)
+ (double)(preuserTime.dwLowDateTime);
//计算CPU使用率
int CPUUseage =
(int)(100.0 - (preIdleTime - IdleTime)
/ (preKernelTime - KernelTime + preUserTime - UserTime)*100.0);
CString CPU;
CPU.Format(_T("%d%%"),
(CPUUseage));
m_this->m_CPU.SetWindowText(CPU);
return 0;
}
相关文章推荐
- 关于URI和URL
- Address already in use: JVM_Bind <null>:8080
- 哈理工OJ 1161 Leyni(线段树)
- excel 数组公式
- 河内之塔
- struts2--国际化
- PHP 如何安全的使用 MySQL ?
- 【Android适配问题集锦-文件类】获取Android机型设备信息的适配差异问题
- iOS学习——AutoLayout中利用 NSLayoutConstraint设置相对布局
- nginx 静态文件 ajax post 404
- Android WebView(一) WebView详解
- docker使用阿里云Docker镜像库加速
- js004-变量、作用域和内存问题
- Android ButterKnife注解式开发
- struts2-类型转换
- nginx 静态文件 ajax post 404
- Test
- ArchLlinux安装SVN工具RabbitVCS
- 编译预处理
- css3渐变之linear-gradient与-webkit-linear-gradient写法异同