Windows 11后台应用算力限制问题及解决方案咨询
引言
我们团队开发的一款应用在Windows 10中运行正常,但在Windows 11中,当应用未显示在桌面时出现了算力限制问题。
该应用通过自研私有DLL经USB与自研硬件设备通信,实现PC端的串口及CAN/J1939通信功能。
症状表现
具体症状为:从DLL队列中取出消息的函数调用速率降至原正常速率的约三分之一,即从每秒约1000次降至每秒约300次,且仅在应用不可见时出现此情况。
应用最小化、或应用最大化但被另一最大化窗口完全覆盖时,都会触发该“限制”。
我们执行的具体测试如下:
- 运行应用,观察到每秒约1000次函数调用
- 最小化应用,观察到每秒约300次函数调用(队列无法及时处理)
- 最大化应用,仍观察到每秒约1000次函数调用
- 在应用窗口上方运行calc.exe,焦点保持在计算器上(进行简单运算),仍观察到每秒约1000次函数调用
- 最大化计算器完全覆盖应用窗口,观察到每秒约300次函数调用
在Windows 10中执行相同测试,函数调用速率无变化。
已尝试措施
我们优化了函数调用相关逻辑,将sleep(1)改为sleep(0),同时尝试开启Windows游戏模式及高性能电源模式。
原本期望这些设置能避免应用在被遮挡或最小化时消息队列处理滞后,但实际均无效,导致总线通信无法及时处理,应用回到前台时需先清空队列才能处理实时消息。
咨询问题
- 我们曾认为是Windows 8引入的Power Throttling功能导致,但Windows 10无此问题,请问导致该行为的Windows 11功能名称是什么?
- 针对我们的应用架构及需求,能否对该功能进行控制?是否有清单设置或特定Windows API可解决此问题?
其他技术信息
应用基于Embarcadero C++ Builder XE7开发
DLL基于Codegear C++ Builder RAD Studio 2007开发
CAN通信采用RP1210a/b标准
使用FTDI驱动包Version 2.12.18
测试无问题的Windows 10版本为21H2 build 19044.2846
出现问题的Windows 11版本为21H2 build 22000.1817
![Windows 11 系统信息]
![Windows 10 系统信息]
内容的提问来源于stack exchange,提问作者Spastika
相关产品推荐
相关产品推荐

