Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将流程关联性设置为";“所有处理器”;在C#中?_C#_Affinity - Fatal编程技术网

如何将流程关联性设置为";“所有处理器”;在C#中?

如何将流程关联性设置为";“所有处理器”;在C#中?,c#,affinity,C#,Affinity,我已经了解了如何设置进程关联掩码,使其仅在单个处理器上运行进程: Process p = ... //getting required process p.ProcessorAffinity = (IntPtr)0x0001; 但我不知道如何将它设置回所有处理器。我该怎么做?谢谢。根据MSDN 一个位掩码,表示在 关联的进程可以在上运行。默认值取决于 计算机上的处理器。默认值为2^n-1,其中n为 处理器的数量 所以你应该把 Process p = ... p.ProcessorAffin

我已经了解了如何设置进程关联掩码,使其仅在单个处理器上运行进程:

Process p = ... //getting required process
p.ProcessorAffinity = (IntPtr)0x0001;
但我不知道如何将它设置回所有处理器。我该怎么做?谢谢。

根据MSDN

一个位掩码,表示在 关联的进程可以在上运行。默认值取决于 计算机上的处理器。默认值为2^n-1,其中n为 处理器的数量

所以你应该把

Process p = ...

p.ProcessorAffinity = (IntPtr)((1 << Environment.ProcessorCount) - 1);
进程p=。。。

p、 ProcessorAffinity=(IntPtr)((1听起来您希望将关联性返回到默认值(请记住,这不一定与所有处理器相同,默认值为2^n-1,其中n是处理器的数量,请参阅)

要返回默认值,只需将默认值存储在变量中,然后重新分配它

void Main()
{
    Process p = Process.GetProcessById(12008);
    var originalAffinity = p.ProcessorAffinity;
    Console.WriteLine("Original affinity: " + originalAffinity);
    p.ProcessorAffinity = (IntPtr)0x0001;
    Console.WriteLine("Current affinity: " + p.ProcessorAffinity);
    p.ProcessorAffinity = originalAffinity;
    Console.WriteLine("Final affinity: " + p.ProcessorAffinity);    
}
在我的机器上的结果:

原始亲缘关系:255

当前亲缘关系:1

最终亲缘关系:255


你假设它被设置为所有处理器——可能启动方式不同。为什么不先获取
p.ProcessorAffinity
的值,然后再恢复?你有麻烦吗?@mason该链接如何回答这个问题?@CodeMaster他问如何将其设置为“所有处理器”。这意味着他不知何故将其设置为之前的所有处理器,但忘记了默认值是“所有处理器”(不太可能),或者错误地认为默认值是“所有处理器”。阅读文档将纠正这种错误印象,并解释如何将其设置为在您想要的任何处理器上运行。似乎相关。您不同意吗?@Jeroen Mostert这很好。我怎么没想到呢?非常感谢,工作非常完美。