qt中的进程优先级及应用内存大小设置方法,VS和Qt工程中申请超过2G的内存的方法
l 进程优先级
l 获取当前进程句柄
l 优先级设置
l 优先级变动
l 优先级获取
一、进程优先级(优先级等级)
简单的说就是进程(线程)的优先级越高,那么就可以分占相对多的CPU时间片。 每个进程都有相应的优先级,优先级决定它何时运行和占用 CPU 时间。最终的优先级共分32级,是从 0 到 31 的数值,称为基本优先级别。
(priority class)优先级等级,这里我叫它进程优先级。因为一般来说它是在调用CreateProcess时指定的,CreateProcess中dwCreationFlags就可以指定进程的优先级。而线程创建时会继承进程的优先等级。
因为线程才是CPU时间分配的最小单位,所以部分书上也叫线程优先等级。
进程优先级 priority class | 标志 | 优先级值 |
idle (低) | IDLE_PRIORITY_CLASS | 4 |
Below 低于标准 | BELOW_NORMAL_PRIORITY_CLASS | 此值在2000以下系统不支持 |
normal (标准) | NORMAL_PRIORITY_CLASS | 9(前台) 或 7(后台) |
Above 高于标准 | ABOVE_NORMAL_PRIORITY_CLASS | 此值在2000以下系统不支持 |
high (高) | HIGH_PRIORITY_CLASS | 13 |
realtime (实时) | REALTIME_PRIORITY_CLASS | 24 |
#define NORMAL_PRIORITY_CLASS 0x00000020
#define IDLE_PRIORITY_CLASS 0x00000040
#define HIGH_PRIORITY_CLASS 0x00000080
#define REALTIME_PRIORITY_CLASS 0x00000100
//2000及XP以上版本支持以下 优先级等级
#define BELOW_NORMAL_PRIORITY_CLASS 0x00004000
#define ABOVE_NORMAL_PRIORITY_CLASS 0x00008000
二、获取当前进程句柄
GetCurrentProcess
三、进程优先级的设置
CreateProcess 创建进程时 也可以设置 进程优先级
SetPriorityClass 设置进程优先级
GetPriorityClass 获取进程优先级
SetProcessPriorityBoost 设置 激活或停用进程优先级提高功能
GetProcessPriorityBoost 获取 是否 激活进程优先级提高功能
void CDialog_PROCESS::OnBnClickedRadio1()
{
SetPriorityClass(GetCurrentProcess(),IDLE_PRIORITY_CLASS);
}
void CDialog_PROCESS::OnBnClickedRadio2()
{
SetPriorityClass(GetCurrentProcess(),BELOW_NORMAL_PRIORITY_CLASS);
}
void CDialog_PROCESS::OnBnClickedRadio3()
{
SetPriorityClass(GetCurrentProcess(),NORMAL_PRIORITY_CLASS);
}
void CDialog_PROCESS::OnBnClickedRadio4()
{
SetPriorityClass(GetCurrentProcess(),ABOVE_NORMAL_PRIORITY_CLASS);
}
void CDialog_PROCESS::OnBnClickedRadio5()
{
SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS);
}
void CDialog_PROCESS::OnBnClickedRadio6()
{
SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
}
/************************************
VS和Qt工程中申请超过2G的内存
在VS中,可以通过下面的设置使得程序可以申请到超过2G的内存,如图
在QtCreator中,可以通过在pro文件中加入下面的语句来实现
QMAKE_LFLAGS_WINDOWS += /LARGEADDRESSAWARE
相关文章
- Qt-qt creator 运行 出现 "can not open .... jom for write 解决方案
- Qt事件:changeEvent(改变事件)
- Qt利用QPainter自绘实现扫描雷达功能scanneritem
- QT-Qt图片按钮类
- QT-Qt中MediaPlay的使用,播放视频或MP4
- 如何分析一个QT类
- s3c2410上搭建QT/Embedded4.8.5开发环境(四)--安装intel-x86 X11平台qt库qt-everywhere-opensource-src-4.8.5
- QT中各种MessageBox的使用
- Qt编写地图综合应用32-区域地图
- QT Qwidget设置窗口无边框,并且可拖动
- Qt QList内存释放
- Qt下如何监测内存泄漏
- C++Qt高级——QMake快速入门
- QT配置opencv_qt调用opencv
- qt操作json(QT 教程)
- QT+ffmpeg+多线程的视频播放器
- 【Qt】在ubuntu上为可执行程序qt创建图标(亲测)
- 2、QT基础——创建Qt项目
- 1、QT基础——Qt概述
- ubuntu安装qt
- Qt链接MySQL遇到的坑
- qt交叉编译报错::-1: error: The Qt version is invalid: Qt version is not properly installed,please run make
- Qt学习一门:直接使用QT具