代码之家  ›  专栏  ›  技术社区  ›  Reto Meier

.NET中的“开始/关联”等效项

  •  3
  • Reto Meier  · 技术社区  · 15 年前

    这个 start Windows Shell命令(在cmd.exe中)似乎能够启动进程 具有 选定的处理器关联,而不是启动进程 然后 在启动后的一段(小)时间内设置所选的处理器关联。

    start /affinity 2 something.exe
    

    有没有一种方法可以在.NET应用程序中使用或不使用P-Invoke来实现这一点?呼喊 cmd.exe /C start ... 不算数。

    这个 Process 类具有 ProcessorAffinity 属性,但它抛出 InvalidOperationException 如果在调用 Start 方法。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Jerry Coffin    15 年前

    我怀疑start命令在这种情况下所做的是启动挂起的进程(即通过 CREATE_SUSPENDED 打电话时 CreateProcess ,然后设置处理器关联,然后恢复线程。

    这样,当这个过程 存在 在没有设置进程关联的情况下,在它开始时 执行 已设置处理器关联,因此它只在指定的处理器上运行。

        2
  •  1
  •   Giorgi    15 年前

    我不认为您可以在启动进程之前设置处理器关联性,因为 SetProcessAffinityMask Function 是进程的句柄。

    另一方面,有一个叫做 Imagecfg 它允许为可执行文件永久设置处理器关联性,但我不确定它是如何工作的。