(Qt) QNetworkAccessManager замедляет работу другого приложения
Кажется, что после того, как я создаю объект QNetworkAccessManager в Qt, он заставляет другие приложения (те, кто интенсивно использует сеть, такие как многопользовательские игры) работать медленно.
Например, если я запускаю Dota2 во время работы моего приложения в качестве фона, игра начинает зависать, даже если мое приложение Qt очень легкое (я проверил через Process Explorer, и оно все время потребляет менее 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, оно показывает странную активность при использовании ввода / вывода
Когда я не использовал QNetworkAccessManager, это странное использование ввода-вывода исчезает. Следовательно, я предполагаю, что мой qnam не был успешно удален, но не смог найти никаких проблем в моем коде.
Если у кого-нибудь был подобный опыт с этой проблемой? Или это просто моя конфигурация использования QNetworkAccessManager неверна?
1 ответ
Я обнаружил, что это была ошибка в QNetworkAccessManager.
В беспроводной среде QNetworkAccessManager сканирует состояние Wi-Fi каждые несколько секунд. Эти маленькие шипы были тому подтверждением. Проверьте следующий отчет об ошибке.
https://bugreports.qt.io/browse/QTBUG-40332
Чтобы решить эту проблему, либо скомпилируйте с
-D QT_NO_BEARERMANAGEMENT
вариант или просто удалить папку носителя в плагине.