设置之前最好判断一下系统有几个CPU: SYSTEM_INFOSystemInfoGetSystemInfo(&SystemInfo);CPU个数:SystemInfo.dwNumberOfProcessors 当前启用的CPU序号: SystemInfo.dwActiveProcessorMask ,Mask representing the set of processors configured into the system. Bit 0 is processor 0bit 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给人卡顿的感觉。
一般双核CPU默认的是会使用双核的。你的情况有两种可能。
1.双核被禁用了
① 有些电脑的BIOS中有禁用双核的选项,例如Advanced>Core Multi-Processing;
② *** 作系统中可以设置禁用双核,xp中是,开始--运行--输入msconfig--打开"系统配置使用程序",BOOT.INI--高级选项--/NUMPROC(N)=,这里选了1;或者是设备管理器中,一个核心被成功禁用了;vista中,开始--运行--输入msconfig--高级选项中 处理器数前面的方框选中,下拉菜单中选择了1。
2.可能是你那个程序比较老,不能识别到两个CPU核心,有些程序根本不支持两个CPU核心,或是在两个CPU核心工作下比一个核心工作下出现问题,这种情况,你可以下一个兼容双核的版本。
默认是没有限制的。在
任务管理器
中,右键点某个进程,可以指定这个进程只允许使用几个核心。
如果是
4核CPU
,只让某进程使用一个核心的话,那么最高使用率就只有25%了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)