c# - .NET 中的 "start/affinity"等价物

标签 c# .net windows multithreading winapi

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/

相关文章:

c# - EventArgs 可以为空吗?

c# - 使用托管服务帐户从 IIS 将文件写入网络驱动器

c# - 使用 JavaScript 将参数传递给代码隐藏函数

c# - 如何在 DMX Controller 中预缓冲 ArtNet3 数据包?

windows - Windows 上的 Docker - 端口已锁定

c# - 调用后代节点而不重复每个节点

c# - WCF 无法使用无线建立到笔记本电脑

c# - 我应该把我的代码放在 Singleton 中的什么地方?

c++ - 如何在 VB.net 中使用 Windows 电源管理 API

c++ - 有没有办法确保连接到注册表中出现的串行端口的设备可以使用?