(Qt) QNetworkAccessManager 减慢其他应用程序
(Qt) QNetworkAccessManager slows down other application
似乎在我在 Qt 中创建了一个 QNetworkAccessManager 对象之后,它使其他应用程序(那些大量使用网络的应用程序,例如多人游戏)运行变慢了。
例如,如果我 运行 Dota2 同时 运行 将我的应用程序作为背景,即使我的 Qt 应用程序非常轻(我通过进程资源管理器检查过,它整个时间仅消耗 CPU 使用量的不到 1%)。如果我从代码中删除 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();
}
有趣的是,当我通过 Process Explorer 检查 I/O 我的应用程序的使用情况时,它在 I/O 使用情况
上显示了奇怪的 activity
当我没有使用 QNetworkAccessManager 时,那种奇怪的 I/O 用法就消失了。因此我假设我的 qnam 没有被成功删除,但在我的代码中没有发现任何问题。
有没有人对这个问题有过类似的经历?
还是只是我对 QNetworkAccessManager 用法的配置不正确?
我发现这是 QNetworkAccessManager 中的错误。
在无线环境中,QNetworkAccessManager 每隔几秒扫描一次 wifi 状态。那些小尖峰就是证据。检查以下错误报告。
https://bugreports.qt.io/browse/QTBUG-40332
要解决这个问题,要么用
编译
-D QT_NO_BEARERMANAGEMENT
选项或仅删除插件中的不记名文件夹。
似乎在我在 Qt 中创建了一个 QNetworkAccessManager 对象之后,它使其他应用程序(那些大量使用网络的应用程序,例如多人游戏)运行变慢了。
例如,如果我 运行 Dota2 同时 运行 将我的应用程序作为背景,即使我的 Qt 应用程序非常轻(我通过进程资源管理器检查过,它整个时间仅消耗 CPU 使用量的不到 1%)。如果我从代码中删除 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();
}
有趣的是,当我通过 Process Explorer 检查 I/O 我的应用程序的使用情况时,它在 I/O 使用情况
上显示了奇怪的 activity当我没有使用 QNetworkAccessManager 时,那种奇怪的 I/O 用法就消失了。因此我假设我的 qnam 没有被成功删除,但在我的代码中没有发现任何问题。
有没有人对这个问题有过类似的经历? 还是只是我对 QNetworkAccessManager 用法的配置不正确?
我发现这是 QNetworkAccessManager 中的错误。
在无线环境中,QNetworkAccessManager 每隔几秒扫描一次 wifi 状态。那些小尖峰就是证据。检查以下错误报告。
https://bugreports.qt.io/browse/QTBUG-40332
要解决这个问题,要么用
编译-D QT_NO_BEARERMANAGEMENT
选项或仅删除插件中的不记名文件夹。