在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

c++ - (Qt)QNetworkAccessManager减慢其他应用程序的速度-LMLPHP

当我不使用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/

10-11 16:34