![Windows 10 进程调度程序已更改?为单线程游戏设置单进程亲和性会导致游戏严重滞后](https://linux22.com/image/1608995/Windows%2010%20%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6%E7%A8%8B%E5%BA%8F%E5%B7%B2%E6%9B%B4%E6%94%B9%EF%BC%9F%E4%B8%BA%E5%8D%95%E7%BA%BF%E7%A8%8B%E6%B8%B8%E6%88%8F%E8%AE%BE%E7%BD%AE%E5%8D%95%E8%BF%9B%E7%A8%8B%E4%BA%B2%E5%92%8C%E6%80%A7%E4%BC%9A%E5%AF%BC%E8%87%B4%E6%B8%B8%E6%88%8F%E4%B8%A5%E9%87%8D%E6%BB%9E%E5%90%8E.png)
在我玩这个游戏时,这种情况并没有发生,所以这似乎是由于 Windows 10 中的更新造成的。为游戏分配四核上的单核亲和性,甚至会使标题屏幕变得非常滞后。2、3 或 4 核都可以正常运行。这款游戏早于多核处理器,专为单核、德军总部敌区而设计。有没有关于更新中这种奇怪的调度程序行为的文档?谷歌搜索没有找到任何直接相关的内容。
附注:与任务管理器不同,在任务管理器中设置单核亲和性是有效的,而设置兼容性垫片 SINGLEPROCAFFINITY 实际上会在__COMPAT__
运行程序时在环境变量中变为 INSTALLER,并且不会分配单核。我顺便提一下,因为这可能与 Microsoft 如何改变调度工作方式有关。
我没有用其他任何东西测试过,因为我确信这是微软造成的,而不是我的努力。除非它是我测试时留下的,我制作了一个清单 xml 文件,并用 mt 实用程序安装了它,我已经删除了它,但可能还留在 Windows 内部。我找不到任何实用程序来调查/删除已安装的清单。
答案1
这里有两件事:
1) 仅仅因为您告诉 1 个线程使用 1 个处理器……并不意味着其他所有线程都被告知不要使用同一个处理器。
2)只是因为你思考该游戏早于多核处理器出现,因此无法实现多线程,这是错误的。
我认为您更有可能遇到 GPU 加速问题...(或缺乏对游戏引擎的支持)id Tech 3 引擎需要 OpenGL 支持,而且更有可能的是所有 OpenGL 内容都在软件中模拟...并且由于该过程被锁定在单个 CPU 核心上,所以这会很糟糕。
我非常怀疑微软的调度程序在这种情况下存在错误。