如何设置进程(线程)在指定的CPU上运行?

如何设置进程(线程)在指定的CPU上运行?,第1张

实现方法进程与指定cpu绑定

:SetProcessAffinityMask(GetCurrentProcess(),dwMask)

线程与指定cpu绑定:

SetThreadAffinityMask(GetCurrentThread(),dwMask)dwMask为CPU序号的或运算值:1(0001)

代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2

,以此类推。

设置之前最好判断一下系统有几个CPU:

SYSTEM_INFOSystemInfo

GetSystemInfo(&SystemInfo)CPU个数:SystemInfo.dwNumberOfProcessors

当前启用的CPU序号:

SystemInfo.dwActiveProcessorMask

,Mask representing the set of processors configured into the system. Bit 0 is processor 0

bit 31 is processor 31.

CPU亲缘性介绍

按照默认设置,当系统将线程分配给处理器时,Windows使用软亲缘性来进行 *** 作。这意味着如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。

有一种新的计算机结构,称为NUMA(非统一内存访问),在该结构中,计算机包含若干块插件板,每个插 件板上有4个CPU和它自己的内存区。

当CPU访问的内存是它自己的插件板上的内存时,NUMA系统运行的性能最好。如果CPU需要访问位于另一个插件板上的内 存时,就会产生巨大的性能降低。在这样的环境中,就需要限制来自一个进程中的线程在共享同一个插件版的CPU上运行。

为了适应这种计算机结构的需要,Windows允许你设置进程和线程的亲缘性。换句话说,你可以控制哪个CPU能够运行某些线程。这称为硬亲缘性。请注意,子进程可以继承进程的亲缘性。

注意:(1)无论计算机中实际拥有多少个CPU,Windows98及以前系统只使用一个CPU,上述API不被支持。

(2)在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在 各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。

应用场景举例:

将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行

。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。

1核心4线程设置方法如下:

1、在开始菜单中点击运行选项,或者是直接按下键盘的win+R组合快捷键。

2、在打开的运行窗口中输入msconfig回车。

3、打开一个系统配置的窗口,点击上面的引选项卡。

4、选中需要的系统。

5、在d出的页面中勾选处理器以及最大内存选项。

cpu在bios开多线程方法:

1、开机按“Delete”键进入主板BIOS设置。

使用方向键“↑、↓、←、→”调整光标。使用回车键“Enter”选择或确认。

2、Advanced高级选项

3、CPUConfigurationCPU设置

4、Hyper-Threading(ALL)超线程

选项:Enable是开启Disable是关闭

使用“回车”键选择,使用方向键调整光标位置。

5、修改完成后按“F4”键d出保存退出窗口,选择“Yes”保存退出。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11571034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存