SetThreadAffinityMask()允许为64个逻辑核心(处理器)设置关联掩码。 但是,windows Datacenter最多可以有64个cpu,每个cpu有许多内核(请参见此处 )。
如何为64个内核设置线程?
PS。 我在C#编码,所以一个.Net的答案是理想的,但在C中的API也很好。
无法卸载MysqL连接器。净6.9.3,在MysqL.Web.v20.dll失败
VB 6 / .NET interop最近被windows更新破坏了吗?
如何监视应用程序是否被打开?
任务pipe理器不同意Process Explorer?
基于服务的数据库
在while循环期间另一个进程正在使用文件(C#)
当窗体位于主监视器的上方和左方时,光标变为对angular线resize
使用.NETdeBUGging“Application.exe已停止工作”
我可以在windows XP或7上使用最新的.NET框架吗?
在windows XP中的后台进程中捕获屏幕vIDeoC#.NET
我使用以下代码来设置处理器组和cpu的关联:
[StructLayout(LayoutKind.Sequential,Pack = 4)] private struct _GROUP_AFFINITY { public UIntPtr Mask; [MarshalAs(UnmanagedType.U2)] public ushort Group; [MarshalAs(UnmanagedType.ByValArray,SizeConst = 3,ArraySubType = UnmanagedType.U2)] public ushort[] Reserved; } [Dllimport("kernel32",SetLastError = true)] private static extern Boolean SetThreadGroupAffinity( IntPtr hThread,ref _GROUP_AFFINITY GroupAffinity,ref _GROUP_AFFINITY PrevIoUsGroupAffinity); [Dllimport("kernel32",SetLastError = true)] private static extern IntPtr GetCurrentThread(); /// <summary> /// Sets the processor group and the processor cpu affinity of the current thread. /// </summary> /// <param name="group">A processor group number.</param> /// <param name="cpus">A List of cpu numbers. The values should be /// between 0 and <see cref="Environment.ProcessorCount"/>.</param> public static voID SetThreadProcessorAffinity(ushort groupID,params int[] cpus) { if (cpus == null) throw new ArgumentNullException(nameof(cpus)); if (cpus.Length == 0) throw new ArgumentException("You must specify at least one cpu.",nameof(cpus)); // Supports up to 64 processors long cpuMask = 0; foreach (var cpu in cpus) { if (cpu < 0 || cpu >= Environment.ProcessorCount) throw new ArgumentException("InvalID cpu number."); cpuMask |= 1L << cpu; } var hThread = GetCurrentThread(); var prevIoUsAffinity = new _GROUP_AFFINITY {Reserved = new ushort[3]}; var newAffinity = new _GROUP_AFFINITY { Group = groupID,Mask = new UIntPtr((ulong) cpuMask),Reserved = new ushort[3] }; SetThreadGroupAffinity(hThread,ref newAffinity,ref prevIoUsAffinity); }
根据MSDN,SetThreadAffinityMask()设置当前处理器组的亲和力,每个处理器组可以有64个逻辑核心。 使用SetThreadGroupAffinity()更改您的组。 有关更多信息,请参阅http://msdn.microsoft.com/zh-CN/library/windows/desktop/dd405503(v=vs.85).aspx 。
要使用64个以上的cpu,必须考虑处理器组。 有关详细信息,请参阅MSDN。
处理器组
总结以上是内存溢出为你收集整理的Windows Server / Datacenter:设置> 64核心的CPU亲和力全部内容,希望文章能够帮你解决Windows Server / Datacenter:设置> 64核心的CPU亲和力所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)