改變程序優先類和執行緒相對優先順序

2021-08-21 08:37:09 字數 1292 閱讀 5987

程序只有優先類,這是乙個微軟為了方便學習理解而抽象的標誌,程序優先類總共有六個,分別是idle, below normal, normal, ablove normal, high, real-time。對應的標誌位分別是idle_priority_class, below_normal_priority_class, normal_priority_class, above_normal_priority_class, high_priority_class, realtime_priority_class。我們可以在建立程序時即呼叫createprocess函式時,在fdwcreate中傳入需要指定的優先類。也可以在程序執行是呼叫setpriorityclass函式來改變自己的優先類。一般來說在建立程序時由於預設fdwcleate傳入null,程序會預設設定為normal優先類。

執行緒有七個優先順序,分別是idle, lowest, below normal, normal, above normal, highest, time-cirtical,對應的標誌位分別是thread_priority_idle, thread_priority_lowest, thread_priority_below_normal, thread_priority_normal, thread_priority_above_normal,  thread_priority_hignest, thread_priority_time_critical。值得注意的是time-critical一般是系統的實時執行緒,優先順序為16至31之間,系統動態提公升執行緒優先順序不會提公升到這個級別,即只能在1至15之間。下面展示一段**並分析。

dword idthread,

handle hthread = createthread(null, 0, threadfunc,null, create_suspend, &idthread);

setthreadpriority(hthread,thread_priority_idle);

resumethread(hthread);

closethread(hthread);

第一行是宣告乙個執行緒id。第二行建立執行緒並將create_suspend引數傳入,表示建立完成後立即掛起此執行緒。這裡我為了簡潔就沒有用c++中的_beginthreadex,我們自己在建立執行緒時一定要使用_beginthreadex或者其他語言提供的介面。還有需要注意的是掛起的是我們剛剛建立的子執行緒,我們的主線程任然在執行**(或掛起,取決於作業系統)。下面這行就是用setthreadpriority函式來改變執行緒的優先順序,此函式第乙個引數接受乙個執行緒控制代碼,第二個引數接受要變為優先順序的標誌位。

後面的兩行就是釋放執行緒以及關閉執行緒控制代碼。

程序 執行緒優先順序

process priority class thread priority level base priority idle priority class thread priority idle thread priority lowest thread priority below norma...

改變程序優先順序 nice renice

ice命令用於調整linux系統中程序的優先順序。通俗地講,linux系統中,程序有 19到19這39個優先順序。19最優先,19最不優先。程序的預設優先順序為0。如果希望將程序調整為最優先,則將程序的nice值設定為 19 如果希望程序最不優先,占用最少的系統cpu時間,則將其設定為19。新建乙個...

改變程序的優先順序

可以設定程序的優先順序來保證程序優先執行。在linux下,通過系統呼叫nice可以改變程序的優先順序。在介紹nice系統呼叫的用法前,需要先了解兩個重要的函式 getpriority和setpriority,它們的宣告如下 include int getpriority int which,int ...