程序 執行緒優先順序,親緣性

2021-08-29 18:48:33 字數 1240 閱讀 7777

親緣性的意思是 程序只在某個cpu上執行 ,比如

bool winapi setprocessaffinitymask(

_in_ handle hprocess,

_in_ dword_ptr dwprocessaffinitymask

);dwprocessaffinitymask 如果是 0 , 代表當前程序只在cpu0 上工作;

如果是 0x03 , 轉為2進製是 00000011 . 代表只在 cpu0 或 cpu1上工作;

優先順序:

//注意, 如果執行緒的優先順序會隨著程序的優先順序浮動

//執行緒:setthreadpriority, getthreadpriority

setpriorityclass(getcurrentprocess(),high_priority_class );

dword pri = getpriorityclass(getcurrentprocess());

親緣性:

#define cpu_mask(mask) (1<<(mask))

system_info sys;

getsysteminfo(&sys);

dword cpucount = sys.dwnumberofprocessors; //cpu數量 4;

dword_ptr pmask, smask; //程序mask, 系統mask;

/*cpu_mask(3) 代表 1<<3 -> 2進製 : 1000 . 意思是只能使用 cpu3 (cpu0 起算).

這個值不要超過cpucount;

setprocessaffinitymask 設定之後可以在任務管理器中檢視相關性.

一旦設定, 所有執行緒將只在這些cpu中執行.子程序也將繼承.

setthreadaffinitymask 用法類似,但 mask 必須是程序使用的cpu 中的一項或幾項;

getprocessaffinitymask 將返回2個mask , 乙個是當前程序 乙個是系統

*/setprocessaffinitymask(getcurrentprocess(),cpu_mask(3));

getprocessaffinitymask(getcurrentprocess(),&pmask,&smask);

cout << hex <

程序 執行緒優先順序

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

多執行緒多程序優先順序理解 優先順序反轉

1.優先順序反轉 priority inversion 由於多程序共享資源,具有最高優先權的程序被低優先順序程序阻塞,反而使具有中優先順序的程序先於高優先順序的程序執行,導致系統的崩潰。這就是所謂的優先順序反轉 priority inversion 2.產生原因 其實,優先順序反轉是在高優級 假設為...

程序優先順序

程序的優先順序可以通過setpriority nice修改優先順序。程序分為普通程序和實時程序。實時程序的優先順序比普通程序的優先順序高。nice的值 20 19值越小優先順序越高。預設為0 不同程序的執行緒優先順序?執行緒會繼承程序的優先順序,核心的排程是執行緒。所以先看程序是普通程序還是實時程序...