高分求c代码:每个线程的cpu使用率(400分!!!!!!!!)
请看以下代码
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3
#define Li2Double(x) ((double)((x).HighPart) * 4.@@6E9 + (double)((x).LowPart))
typedef struct
{
DWORD dwUnknown1;
ULONG uKeMaximumIncrement;
ULONG uPageSize;
ULONG uMmNumberOfPhysicalPages;
ULONG uMmLowestPhysicalPage;
ULONG uMmHighestPhysicalPage;
ULONG uAllocationGranularity;
PVOID pLowestUserAddress;
PVOID pMmHighestUserAddress;
ULONG uKeActiveProcessors;
BYTE bKeNumberProcessors;
BYTE bUnknown2;
WORD wUnknown3;
} SYSTEM_BASIC_INFORMATION;
typedef struct
{
LARGE_INTEGER liIdleTime;
DWORD dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;
typedef struct
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
PROCNTQSI NtQuerySystemInformation;
void main()
{
SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
SYSTEM_TIME_INFORMATION SysTimeInfo;
SYSTEM_BASIC_INFORMATION SysBaseInfo;
double dbIdleTime;
double dbSystemTime;
LONG status;
LARGE_INTEGER liOldIdleTime = {0,0};
LARGE_INTEGER liOldSystemTime = {0,0};
NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(GetModuleHandle("ntdll"),"NtQuerySystemInformation");
if (!NtQuerySystemInformation) return;
// get number of processors in the system
status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
if (status != NO_ERROR) return;
int amount=0;
//printf("\n您的CPU使用率为: ");
while(!_kbhit())
{
//设置新的系统时间:
amount++;
status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR) return;
status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR) return;
if (liOldIdleTime.QuadPart != 0)
{
dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);
dbIdleTime = dbIdleTime / dbSystemTime;
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors;
int c=(int)dbIdleTime;
printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b%d---%d%%",amount,c);
}
//改变新的CPU使用率和系统时间
liOldIdleTime = SysPerfInfo.liIdleTime;
liOldSystemTime = SysTimeInfo.liKeSystemTime;
Sleep(1000);
}
printf("\n");
}
-
佚名2024-05-18 18:34:02
问如果我有一个C++程序源代码,我该怎么用VC++6.0把她做成程序?
答打开VC,新建一个文件,取名为1.cpp(这个是C++的专用后缀,若为C,则为1.c)。然后把代码粘禁区,点编译,然后链接。这里没有VC,所以无法演示,不过你可...
-
佚名2024-05-18 00:10:57
问c runtime函数库为每个线程配置一块新的内存
答很高兴回答你这个问题!在C程序中,每次调用一个函数,系统必须分配内存来保存这些参数的值、局部变量以及函数的返回地址(返回调用这函数的地方),函数退出后带着代着返...
-
佚名2024-05-18 20:22:27
问c 多线程 问题
答这还不简单,是没有解决同步的问题。 操作系统执行指令是由时间片组成的。你那个变量i,又没有规定只能一个人访问。第一个线程执行了,i=0,时间片到了,轮到第二个线...
-
佚名2024-05-18 02:51:58
问C语言子线程中如何使用主线程的变量
答要么 使用全局变量.要么 在主线程中,通过全局变量,或者消息, 或者建立子线程传参, 总之凡是可行的交互方式都可以, 把主线程中变量的地址传给子线程. 即使用主...
-
佚名2024-05-18 23:56:13
问C# 多线程,对同一个类新建6个对象,每个对象运行在不同的6个线程中
答你在给类中对象赋值的时候,有没有给对象赋值成了引用类型的数据,比如说类或者数组,如果是的话,当然你改这个类或数组的时候,被引用的你新建的类中的属性或字段可能会同...
-
佚名2024-05-18 13:06:16
问求助各位高手:c#把多个线程挂起的代码,就是我要编写断点续传,需要把多个线程挂起
答线程一旦开启,只能终止,不能挂起断点的时候直接终止线程好了,续传的时候再新建一个线程去下载
-
佚名2024-05-18 08:00:00
问如何在android程序中使用c语言编程
答和正常的C编程是没多大区别的,只不过要使用安卓的SDK。 并且采用对应的编译器。同时,必须具有相应权限才可以正常运行。
-
佚名2024-05-18 08:00:00
问如何使用C或C++编写一个可以自复制的程序?
答自我复制的原理是文件的复制和粘贴,所以只要写个文件复制程序就行了。如果是windows系统的话只要调用APIGetModuleFileName即可得到自身的路径...
-
佚名2024-05-18 08:00:00
问在C#中使用线程,线程的方法函数中需要带一个数组的参数传递进去
答threadStart mm=new threadStart (doit);thread nn=new thread(mm);nn.start(数组);publ...
-
佚名2024-05-18 08:00:00
问C#中多个线程调用同一个方法,方法的变量是公有变量,怎样进行方法的调用使各个线程互不影响。
答最简单的方法,把这个变量加锁,或者把函数方法加锁,使其同一时间只能被一个线程调用。但这样牺牲了效率,所以首先你还是得思考以下问题:1.这个变量值会被其他线程改变...
风水
起名
网名
- 1 带虎的网名三个字
- 2 关于lol螳螂的网名
- 3 网名 武侠风
- 4 只知道豆瓣id和昵称
- 5 qq的昵称 群里单独设置
- 6 如何改昵称qq
- 7 全民k个昵称
- 8 qq昵称叫二十五有什么含义吗
- 9 屏幕主题昵称
- 10 淘宝战网昵称改名字吗
说说
- 1 不矫情的个性签名
- 2 怎么写房产个性签名
- 3 旅游感慨说说心情
- 4 六一教师说说
- 5 想老婆了说说心情
- 6 伙食太难吃的说说
- 7 空间说说点赞易语言
- 8 毕业孤独说说
- 9 打过狂犬疫苗的来说说
- 10 和男友两周年纪念日说说