c程序cpu占用率

c程序cpu占用率,第1张

用 C 语言写个程序,运行时,cpu占用率一直保持50%

既然想要让cpu占有率一直保持一定数值,就想要弄明白,cpu占用率是如何得到的

在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的洞兄时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,烂颤昌CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间/ CPU总的执行时间。

那么问题就很简单了,我饥扒们只要保持让cpu运行50,休息50就可以保证cpu的利用保持在50%了(忽略其他程序的影响)。

得到cpu占有率的API函数:

GetSystemTimes

得到内存使用情况的API函数:

GlobalMemoryStatusEx Function

Retrieves information about the system's current usage of both physical and virtual memory.

GetPerformanceInfo Function

Retrieves the performance values contained in the PERFORMANCE_INFORMATION structure

获取特定程序的内存使用情况用:

GetProcessMemoryInfo Function

Retrieves information about the memory usage of the specified process.

#define _WIN32_WINNT   0x0501

#include <Windows.h>

#include <iostream>

using   namespace   std

__int64 CompareFileTime ( FILETIME time1, FILETIME time2 )

{

__int64 a = time1.dwHighDateTime <<32 | time1.dwLowDateTime

__int64 b = time2.dwHighDateTime <<32 | time2.dwLowDateTime

return   (b - a)

}

void main()

{

HANDLE hEvent

BOOL res

FILETIME preidleTime

FILETIME prekernelTime

FILETIME preuserTime

FILETIME idleTime

FILETIME kernelTime

FILETIME userTime

res = GetSystemTimes( &idleTime, &kernelTime, &userTime )

preidleTime = idleTime

prekernelTime = kernelTime

preuserTime = userTime

hEvent = CreateEvent (NULL,FALSE,FALSE,NULL)// 初始值扮滑为 nonsignaled ,并且每次触发后自动设置为nonsignaled

while (1){

WaitForSingleObject( hEvent,1000 )//等待500毫秒

res = GetSystemTimes( &idleTime, &kernelTime, &userTime )

int idle = CompareFileTime( preidleTime,idleTime)

int kernel = CompareFileTime( prekernelTime, kernelTime)

int user = CompareFileTime(preuserTime, userTime)

int cpu = (kernel +user - idle) *100/(kernel+user)

int cpuidle = ( idle) *100/(kernel+user)

cout <<"CPU利厅轮腊用率:" <<cpu <<"%" <<"      CPU空闲桐败率:" <<cpuidle <<"%" <<endl

preidleTime = idleTime

prekernelTime = kernelTime

preuserTime = userTime

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12561028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存