我已经用 C# 创建了一个窗口应用程序。现在我想设置该应用程序的 CPU 亲和力。我可能有 2 个处理器、4 个处理器、8 个处理器或可能超过 8 个处理器。
我想使用接口的输入来设置 cpu 关联性。
我怎样才能做到这一点?如何使用Environment.ProcessorCount设置亲和力?
尝试这个:
Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)2;
Here更多相关内容。
处理器亲和性将每个处理器表示为一个位。位 0 代表处理器一,位 1 代表处理器二,依此类推。下表显示了可能的子集处理器亲和性对于四处理器系统。
Property value (in hexadecimal) Valid processors
0x0001 1
0x0002 2
0x0003 1 or 2
0x0004 3
0x0005 1 or 3
0x0007 1, 2, or 3
0x000F 1, 2, 3, or 4
这是一个小示例程序:
//TODO: manage exceptions
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Total # of processors: {0}", Environment.ProcessorCount);
Console.WriteLine("Current processor affinity: {0}", Process.GetCurrentProcess().ProcessorAffinity);
Console.WriteLine("*********************************");
Console.WriteLine("Insert your selected processors, separated by comma (first CPU index is 1):");
var input = Console.ReadLine();
Console.WriteLine("*********************************");
var usedProcessors = input.Split(',');
//TODO: validate input
int newAffinity = 0;
foreach (var item in usedProcessors)
{
newAffinity = newAffinity | int.Parse(item);
Console.WriteLine("Processor #{0} was selected for affinity.", item);
}
Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)newAffinity;
Console.WriteLine("*********************************");
Console.WriteLine("Current processor affinity is {0}", Process.GetCurrentProcess().ProcessorAffinity);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)