C++/MFC-线程优先级

时间:2023-03-09 12:56:32
C++/MFC-线程优先级

转载: https://blog.****.net/qwdpoiguw/article/details/72830426

一、线程优先级(Thread priority )

简单的说就是(线程)的优先级越高,那么就可以分占相对多的CPU时间片。  

每个进程都有相应的优先级,优先级决定它何时运行和占用 CPU 时间。

最终的优先级共分32级,是从 0 到 31 的数值,称为基本优先级别。

进程优先级priority class

标志

优先级值

idle     (低)

IDLE_PRIORITY_CLASS

Below     低于标准

BELOW_NORMAL_PRIORITY_CLASS

此值在以下系统不支持

normal  (标准)

NORMAL_PRIORITY_CLASS

9(前台) 或 7(后台)

Above     高于标准

ABOVE_NORMAL_PRIORITY_CLASS

此值在以下系统不支持

high      (高)

HIGH_PRIORITY_CLASS

realtime (实时)

REALTIME_PRIORITY_CLASS

一个线程创建的时候,会继承进程的优先级等级。另外线程优先级可以用SetThreadPriority来进行微调

微调范围

 

线程优先级等级

标志

优先级值

idle      (最低)

THREAD_PRIORITY_IDLE

如果进程优先级为realtime则调整为,其它情况为

2

LOWEST  低

THREAD_PRIORITY_LOWEST

-2(在原有基础上-2)

3

BELOW   低于标准

THREAD_PRIORITY_BELOW_NORMAL

-1(在原有基础上-1)

NORMAL(标准)

THREAD_PRIORITY_NORMAL

不变(取进程优先级值)

5

ABOVE    高于标准

THREAD_PRIORITY_ABOVE_NORMAL

+1(在原有基础上+1)

6

HIGHEST (高)

THREAD_PRIORITY_HIGHEST

+2(在原有基础上+2)

CRITICAL(最高)

THREAD_PRIORITY_TIME_CRITICAL

如果进程优先级为realtime则调整为,其它情况为

注意:进程有6个等级,线程有7个等级

二、获取当前线程句柄

HANDLE  GetCurrentThread(VOID)
//返回当前进句柄

DWORD   GetCurrentThreadId(VOID)
//返回当前进程ID值

三、线程优先级的设置

BOOL SetThreadPriority   //设置一个线程的优先级别

(

 HANDLE hThread,// 线程句柄   handle to thethread

 int nPriority      // 要设置线程优先级别thread priority level

);

int GetThreadPriority    返回一个线程的优先级别 

SetThreadPriorityBoost    设置线程是否禁用动态调整优先级功能。

GetThreadPriorityBoost    获取线程是否禁用了优先级微调功能。

四、示例代码

SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_IDLE); //设置为 最低

jpg改rar C++/MFC-线程优先级