方法参考网上的一段代码,把它改成了类以方便调用,很简单,但是可以一用,哈哈。
cpu_usage.h
#include <windows.h>
<span>class</span><span> CpuUsage {
</span><span>public</span><span>:
CpuUsage();
</span><span>void</span><span> init();
</span><span>//</span><span> get cpu usage rate from the last invoke of the function or init</span><span>int</span><span>get</span><span>();
</span><span>private</span><span>:
</span><span>bool</span><span> inited_;
ULONGLONG cpu_time_;
ULONGLONG cpu_idle_time_;
};</span>
cpu_usage.cpp
#include <span>"</span><span>cpu_usage.h</span><span>"</span><span>
CpuUsage::CpuUsage(): inited_(</span><span>false</span><span>) {}
</span><span>void</span><span> CpuUsage::init() {
FILETIME ft_sys_idle;
FILETIME ft_sys_kernel;
FILETIME ft_sys_user;
ULARGE_INTEGER ul_sys_idle;
ULARGE_INTEGER ul_sys_kernel;
ULARGE_INTEGER ul_sys_user;
GetSystemTimes(</span>&ft_sys_idle, <span>/*</span><span> System idle time </span><span>*/</span>
&ft_sys_kernel, <span>/*</span><span> system kernel time </span><span>*/</span>
&ft_sys_user); <span>/*</span><span> System user time </span><span>*/</span><span>
CopyMemory(</span>&ul_sys_idle, &ft_sys_idle, <span>sizeof</span><span>(FILETIME));
CopyMemory(</span>&ul_sys_kernel, &ft_sys_kernel, <span>sizeof</span><span>(FILETIME));
CopyMemory(</span>&ul_sys_user, &ft_sys_user, <span>sizeof</span><span>(FILETIME));
cpu_time_ </span>= ul_sys_kernel.QuadPart +<span> ul_sys_user.QuadPart;
cpu_idle_time_ </span>=<span> ul_sys_idle.QuadPart;
inited_ </span>= <span>true</span><span>;
}
</span><span>//</span><span> get cpu usage rate from the last invoke of the function or init</span><span>int</span> CpuUsage::<span>get</span><span>() {
</span><span>if</span> (!<span>inited_)
</span><span>return</span> -<span>1</span><span>;
FILETIME ft_sys_idle;
FILETIME ft_sys_kernel;
FILETIME ft_sys_user;
ULARGE_INTEGER ul_sys_idle;
ULARGE_INTEGER ul_sys_kernel;
ULARGE_INTEGER ul_sys_user;
GetSystemTimes(</span>&ft_sys_idle, <span>/*</span><span> System idle time </span><span>*/</span>
&ft_sys_kernel, <span>/*</span><span> system kernel time </span><span>*/</span>
&ft_sys_user); <span>/*</span><span> System user time </span><span>*/</span><span>
CopyMemory(</span>&ul_sys_idle, &ft_sys_idle, <span>sizeof</span><span>(FILETIME));
CopyMemory(</span>&ul_sys_kernel, &ft_sys_kernel, <span>sizeof</span><span>(FILETIME));
CopyMemory(</span>&ul_sys_user, &ft_sys_user, <span>sizeof</span><span>(FILETIME));
ULONGLONG interval </span>= ul_sys_kernel.QuadPart + ul_sys_user.QuadPart -<span> cpu_time_;
</span><span>int</span> use_rate = (interval - (ul_sys_idle.QuadPart - cpu_idle_time_)) * <span>100</span> /<span> interval;
cpu_time_ </span>= ul_sys_kernel.QuadPart +<span> ul_sys_user.QuadPart;
cpu_idle_time_ </span>=<span> ul_sys_idle.QuadPart;
</span><span>return</span><span> use_rate;
}</span>
原文:http://www.cnblogs.com/waytofall/p/5007549.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!