Es scheint, nachdem ich ein QNetworkAccessManager-Objekt in Qt erstellt habe, macht es andere Anwendungen (diejenigen, die Netzwerk stark, wie Multiplayer-Spiel) langsam laufen.(Qt) QNetworkAccessManager verlangsamt andere Anwendung
Zum Beispiel, wenn ich Dota2 während der Ausführung meiner App als Hintergrund ausgeführt habe, beginnt das Spiel zu verzögern, auch wenn meine Qt-App sehr leicht ist (Ich habe den Process Explorer überprüft und verbraucht nur ganze 1% der CPU-Auslastung). Wenn ich den QNetworkAccessManager-Teil aus dem Code entferne, läuft das Spiel reibungslos und ohne Verzögerung.
So verwende ich QNetworkAccessManager;
QNetworkAccessManager *qnam = new QNetworkAccessManager(this);
response = qnam->get(QNetworkRequest(url));
connect(response , &QNetworkReply::finished, this, &Test::parse_response);
Und in parse_response()
void parse_response() {
// Network Error occured
if (response->error() != QNetworkReply::NoError) {
response->deleteLater();
return;
}
response->deleteLater();
qnam->deleteLater();
}
Komische ist, dass, wenn ich überprüfe ich/O-Nutzung meiner app durch Process Explorer, es seltsam Aktivität auf I/O-Nutzung
Wenn ich QNetworkAccessManager nicht verwendet habe, verschwindet diese seltsame E/A-Verwendung. Daher nehme ich an, dass mein qnam nicht erfolgreich gelöscht wurde, aber in meinem Code kein Problem gefunden wurde.
Wenn jemand ähnliche Erfahrungen mit diesem Problem hatte? Oder ist es nur meine Konfiguration der Verwendung von QNetworkAccessManager falsch?
'QNetworkAccessManager' selbst wird wahrscheinlich keine Probleme mit Ihrer Maschine laden, aber Ihre Verwendung wird es. Sie sollten untersuchen, was "QNetworkAccessManager" genau macht und wie oft es verwendet wird. – hank
Nein. Wenn ich den gesamten Code entfernte und einfach das QNetworkAccessManager-Objekt erstellte, zeigte es dasselbe Ergebnis. – Jaebum