C++/MFC-线程优先级

来源:互联网 发布:淘宝售后技巧 编辑:程序博客网 时间:2024/06/06 08:58

一、线程优先级(Thread priority )

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

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

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

 

进程优先级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

 

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

    微调范围

 

线程优先级等级

标志

优先级值

1

idle      (最低)

THREAD_PRIORITY_IDLE

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

2

LOWEST  低

THREAD_PRIORITY_LOWEST

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

3

BELOW   低于标准

THREAD_PRIORITY_BELOW_NORMAL

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

4

NORMAL(标准)

THREAD_PRIORITY_NORMAL

不变(取进程优先级值)

5

ABOVE    高于标准

THREAD_PRIORITY_ABOVE_NORMAL

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

6

HIGHEST (高)

THREAD_PRIORITY_HIGHEST

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

7

CRITICAL(最高)

THREAD_PRIORITY_TIME_CRITICAL

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

注意:进程有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); //设置为 最低


原创粉丝点击