用于windows 平台的CPU 100% 预警测试程序,c++实现
cpp程序文件名:win32HighCpuTest.cpp
#include <Windows.h>
#include <iostream>
using namespace std;
//定义线程工作函数
DWORD CALLBACK TestFunc1(LPVOID lpParam) {
while (1) //死循环使CPU空转
;
}
int main() {
SYSTEM_INFO sysinfo; // SYSTEM_INFO 结构体用于存放收集的系统配置信息
GetSystemInfo(&sysinfo); //获取window配置信息
DWORD CPUCores = sysinfo.dwNumberOfProcessors; // 从sysinfo中拿到CPU和核心数量,这里获取的核心数不是物理核心数,而是CPU制程的线程数, 比如4核CPU,每单核CPU可并行两线程,那么就是4核8线程,得到的CPUCores数量就是8
cout << "CPU cores:" << CPUCores << endl; //打印CPUCores
DWORD nID = 0; //临时变量用于存放创建的线程ID
HANDLE *hThreads = new HANDLE[CPUCores]; // new 线程句柄的数组
for (DWORD i = 0; i < CPUCores; i++) {
//CreateThread 循环创建线程,句柄存放在hThreads 数组中
hThreads[i] = CreateThread(NULL, 0, TestFunc1, NULL, 0, &nID);
}
WaitForMultipleObjects(2, hThreads, true, INFINITE); //主线程阻塞等待所有线程结束
cout << "wait over" << endl; //所有线程结束后才会打印这句(实际运行不会出现这句打印,因为线程工作函数TestFunc1是死循环的永远不会结束哈哈~~~)
return 0;
}
编译
g++ .\win32HighCpuTest.cpp -W -std=c++11 -o .\win32HighCpuTest.exe
运行:
.\win32HighCpuTest.exe
检查运行效果:
CPU0~CPU7 全部100%
CPU 瞬间就拉满了~
#结束
Ctrl + C 结束程序,后CPU又降下来了
程序我放在了这里:win32HighCpuTest.exe