start
Windows shell 命令(在 cmd.exe 中)似乎能够启动进程具有选定的处理器关联,而不是启动进程然后在它启动后的某个(小)时间段内设置所选的处理器亲和性。
start /affinity 2 something.exe
有没有办法在使用或不使用 P-Invoke 的情况下在 .NET 应用程序中执行相同的操作?调用 cmd.exe/C start ...
不算在内。
Process
类具有 ProcessorAffinity
属性,但如果您在调用 Start 之前尝试设置它,它会抛出
方法。InvalidOperationException
最佳答案
我怀疑 start 命令在这种情况下所做的是启动暂停的进程(即,在调用 CreateProcess
时传递 CREATE_SUSPENDED
),然后设置处理器亲和性,然后恢复线程。
这样,当进程存在时没有设置进程关联,当它开始执行时处理器关联已经设置,所以它只会运行在指定的处理器上。
关于c# - .NET 中的 "start/affinity"等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2976600/