轉載: 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
