zl程序教程

您现在的位置是:首页 >  工具

当前栏目

qt中的进程优先级及应用内存大小设置方法,VS和Qt工程中申请超过2G的内存的方法

2023-09-11 14:16:44 时间

l         进程优先级

l         获取当前进程句柄

l         优先级设置

l         优先级变动

l         优先级获取

      

一、进程优先级(优先级等级)

    简单的说就是进程(线程)的优先级越高,那么就可以分占相对多的CPU时间片。   每个进程都有相应的优先级,优先级决定它何时运行和占用 CPU 时间。最终的优先级共分32级,是从 0 到 31 的数值,称为基本优先级别。

 

  priority class)优先级等级,这里我叫它进程优先级。因为一般来说它是在调用CreateProcess时指定的,CreateProcessdwCreationFlags就可以指定进程的优先级。而线程创建时会继承进程的优先等级

    因为线程才是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