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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM