C++/MFC-线程优先级
转载: https://blog.csdn.net/qwdpoiguw/article/details/72830426
一、线程优先级(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); //设置为 最低
jpg改rar