在Qt中创建QNetworkAccessManager对象后,它似乎使其他应用程序(那些大量使用网络的应用程序,例如多人游戏)运行缓慢。
例如,如果我在后台运行应用程序的同时运行Dota2,即使我的Qt应用程序非常轻巧,游戏也开始滞后(我通过进程资源管理器进行了检查,并且整个时间仅消耗不到1%的CPU使用率)。如果我从代码中删除了QNetworkAccessManager部分,那么游戏将平稳运行而没有任何滞后。
这是我使用QNetworkAccessManager的方法;
QNetworkAccessManager *qnam = new QNetworkAccessManager(this);
response = qnam->get(QNetworkRequest(url));
connect(response , &QNetworkReply::finished, this, &Test::parse_response);
并在parse_response()中
void parse_response() {
// Network Error occured
if (response->error() != QNetworkReply::NoError) {
response->deleteLater();
return;
}
response->deleteLater();
qnam->deleteLater();
}
有趣的是,当我通过流程浏览器检查我的应用程序的I / O使用率时,它显示有关I / O使用率的怪异 Activity
当我不使用QNetworkAccessManager时,那个奇怪的I / O用法就消失了。因此,我假设我的qnam尚未成功删除,但在我的代码中找不到任何问题。
是否有人对此问题有类似的经历?
还是仅仅是我对QNetworkAccessManager的使用配置不正确?
最佳答案
我发现这是QNetworkAccessManager中的错误。
在无线环境中,QNetworkAccessManager每隔几秒钟扫描一次wifi状态。这些小小的尖峰就是证据。检查以下错误报告。
https://bugreports.qt.io/browse/QTBUG-40332
要解决此问题,请使用
-D QT_NO_BEARERMANAGEMENT
选项或仅删除插件中的载体文件夹。
关于c++ - (Qt)QNetworkAccessManager减慢其他应用程序的速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38748470/