繁体   English   中英

(Qt)QNetworkAccessManager减慢其他应用程序的速度

[英](Qt) QNetworkAccessManager slows down other application

在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使用率的怪异活动

I / O的使用(标记为“其他”)。这些紫色的尖峰是我实际发出HTTP请求时发出的尖峰。其余的小峰值是未知的。顺便说一句,奇怪的I / O不断请求12.8KB

当我不使用QNetworkAccessManager时,那个奇怪的I / O用法就消失了。 因此,我认为我的qnam尚未成功删除,但在我的代码中找不到任何问题。

是否有人曾对此问题有过类似的经历? 还是仅仅是我对QNetworkAccessManager的使用配置不正确?

我发现这是QNetworkAccessManager中的错误。

在无线环境中,QNetworkAccessManager每隔几秒钟扫描一次wifi状态。 这些小小的尖峰就是证据。 检查以下错误报告。

https://bugreports.qt.io/browse/QTBUG-40332

要解决此问题,请使用

-D QT_NO_BEARERMANAGEMENT 

选项或仅删除插件中的载体文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM