目录
1.查看进程优先级
打开任务管理器,点击“详细信息”,选中要查看的exe,然后右键点击,在弹出的菜单中可以看到当前进程的优先级。
2.设置进程优先级
每个进程都有相应的优先级,优先级决定它何时运行和占用 CPU 时间。进程(线程)的优先级越高,那么就可以分占相对多的CPU时间片。最终的优先级共分32级,是从 0 到 31 的数值,称为基本优先级别。注意:因为线程才是CPU时间分配的最小单位,所以部分书上也叫线程优先等级。
2.1 与进程优先级设置相关的API
- GetCurrentProcess:获取当前进程句柄
- CreateProcess:创建进程,创建进程时可以直接设置进程优先级
- SetPriorityClass:设置进程优先级,创建进程后可以调用此函数修改优先级
- GetPriorityClass:获取进程优先级
- SetProcessPriorityBoost:设置激活或停用系统自动调整进程优先级的功能
- GetProcessPriorityBoost:获取是否激活了系统自动调整进程优先级的功能
2.2 优先级等级划分
标识 | 优先级 | 数值 |
IDLE_PRIORITY_CLASS | 低优先级 | 0x00000040 |
BELOW_NORMAL_PRIORITY_CLASS | 低于标准优先级 | 0x00004000 |
NORMAL_PRIORITY_CLASS | 标准优先级 | 0x00000020 |
ABOVE_NORMAL_PRIORITY_CLASS | 高于标准优先级 | 0x00008000 |
HIGH_PRIORITY_CLASS | 高优先级 | 0x00000080 |
REALTIME_PRIORITY_CLASS | 实时(最高优先级) | 0x00000100 |
2.3 示例代码
#include "QtWidgetsApplication5.h"
#include <QtWidgets/QApplication>
#include <windows.h>
int main(int argc, char *argv[])
{
//设置进程优先级为"实时优先级"
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
//阻止系统自动调整进程优先级
SetProcessPriorityBoost(GetCurrentProcess(), true);
QApplication a(argc, argv);
QtWidgetsApplication5 w;
w.show();
return a.exec();
}
2.4 查看优先级设置是否生效