Hallo,
ich bekomme regelmäßig einige KB's Daten über TCP/IP die ich an einen anderen Thread weiterleite. Momentan benutze ich dazu (mehrere) QLists.
Wäre es sinnvoll hier auf QByteArrays oder QQueues zu wechseln?
cu, Bernd
Datenübertragung zwischen Threads
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Morgen,
im Prinzip mache ich das jetzt so, gdList ist ein QList, gd ist eine Struktur mit z.Zt. ca. 30 Bytes, später vermutlich mal 30 * 2 Bytes.
im TCP/IP Thread:
und im anderen Thread:
Ist das mit einer QList prinzipiell OK oder sollte ich hier auf eine Queue oder ein Array o.ä. umstellen, in welchem nicht immer neue Elemente angelegt/gelöscht werden müssten?
P.S. Habe keine automatische Antwort-Benachrichtigung erhalten?
cu, Bernd
im Prinzip mache ich das jetzt so, gdList ist ein QList, gd ist eine Struktur mit z.Zt. ca. 30 Bytes, später vermutlich mal 30 * 2 Bytes.
im TCP/IP Thread:
Code: Alles auswählen
while (GrafikDatenImTelegramm) { // 1-200, typisch ca. 1-5
// dekodieren und in Struktur gd schreiben
mutex.lock();
gdList[station] << gd;
mutex.unlock();
}
emit GraphDataChanged(station);Code: Alles auswählen
mutex.lock();
for (j = 0; j < gdList[station].size(); j++ )
myData[station]->append(&gdList[station].at(j), 1);
gdList[station].clear();
mutex.unlock();
P.S. Habe keine automatische Antwort-Benachrichtigung erhalten?
cu, Bernd
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Aehm bei einem signal ueber threadgrenzen laeuft das doch assynchron, sprich dein emit wird in ne queue gestellt und kommt sofort wieder zurueck.Ich würde im TCP/IP thread einfach ein Signal mit den Daten losschicken
Wenn er dabei die daten kopiert (kein zeiger keine referenz in der Signatur des Signals) mag das gehen.
bei 2*30 Byte kann man noch streiten was effektiver ist, der lock oder die copy.
empfaengt er aber bloecke von seiner struktur, was bei TCP/IP gar ned mal so abwegig ist, wird er um die locks ned drumherumkommen.
Ciao ...
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: