Process和Thread在指定CPU執行

2022-02-11 16:07:36 字數 1352 閱讀 2537

最近幫朋友寫了乙個多執行緒程式,他那邊一執行多執行緒就出錯,我這邊卻沒有任何問題,找了好久才找到解決方法,原來是cpu的問題,有朋友遇到同樣的問題,可以一起參考

//程序與指定cpu繫結

setprocessaffinitymask(getcurrentprocess(), dwmask);

//執行緒與指定cpu繫結

setthreadaffinitymask(getcurrentthread(),dwmask);

dwmask為cpu序號的或運算值:1(0001)代表只執行在cpu1,2(0010)代表只執行在cpu2,3(0011)代表可以執行在cpu1和cpu2,以此類推。

//使用8核cpu

setthreadaffinitymask(-1,254)

因此,若要將3個執行緒限制到cpu1、2和3上去執行,可以這樣操作

//

thread 0 can only run on cpu 0.

setthreadaffinitymask(hthread0,

0001); //

第0位是1

setthreadaffinitymask(hthread1,

0002

); setthreadaffinitymask(hthread2,

0003

); setthreadaffinitymask(hthread3,

0004);

如果要將3個程序限制到cpu1、2和3上去執行,可以這樣操作

setprocessaffinitymask( hprocess0, 0001);//

use cpu 0 only

setprocessaffinitymask( hprocess1,

0002 );//

use cpu 1 only

setprocessaffinitymask( hprocess2,

0003 );//

allow running on both cpus

setprocessaffinitymask( hprocess3,

0004 );//

use cpu 4 only

應用場景舉例:

將ui執行緒限制在乙個cpu,將其他實時性要求較高的執行緒限制在另乙個cpu。這樣,當ui需要占用大量cpu時間時,就不會拖累其他實時性要求較高的執行緒的執行。同樣可以將ui執行緒與一些優先順序不高但耗時的非同步運算執行緒設定在不同cpu上,避免ui給人卡頓的感覺。

Process 和 thread 的區別

日期 2013年4月24日 程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一...

Process程序 Thread執行緒

using system using system.collections.generic using system.linq using system.text using system.diagnostics namespace 程序process 通過程序來開啟一些應用程式 通過指定文件或應用...

python的thread和threading區別

python提供了多種模組用來支援多執行緒程式設計,thread 在python3中改名為 thread threading,和 queue模組。通過加入queue模組,使用者可以建立多個執行緒共享資料的佇列資料結構。thread和threading模組都可以用來建立和管理執行緒,而thread模組...