Hallo,
ich entwickle grade eine Server-Client Applikation mit Qt die sehr Threadgestützt ist. Nun habe ich mir die Frage gestellt wie ich das ganze threadsicher mache.
Dabei bin ich der Meinung ich das ich signale und slots benutzen kann oder mutexe. Die große Frage ist wie performant is das ganze unter schwerer Last
Hier sind mal meine pro und contra gedanken:
Signals and slots:
Pro:
Einfache Nutzung
Contra:
Ca 10 Funktionsaufrufe sind nötig
Es wird ein Signal benötigt für die anfrage und eins für die antwort
Ich weis nich wie die Performanz ist wenn man 100-300 signale pro Sekunde hat in eine signalqueue
QMutex:
Pro:
Nich soviele Funktionsaufrufe, schätze ich
Kein antwortsignal nötig wegen rückgabeparameter
Contra:
Bin mir nich sicher aber cih glaube das ein artender thread durch ein signal informiert wird ob er weiter machen kann
Hoffe mal einer kann da helfen
Signale und Slots vs Mutex
HI,
ich kann dir bezüglich der Geschwindigkeit von Signal/Slots ein wenig die Angst nehmen:
"On an i586-500, you can emit around 2,000,000 signals per second connected to one receiver, or around 1,200,000 per second connected to two receivers."
So stehts in der qt-doku.
Sollte also mit deinen 300-400/s nicht wirklich ein Problem geben
Gruß,
dvdjimmy
ich kann dir bezüglich der Geschwindigkeit von Signal/Slots ein wenig die Angst nehmen:
"On an i586-500, you can emit around 2,000,000 signals per second connected to one receiver, or around 1,200,000 per second connected to two receivers."
So stehts in der qt-doku.
Sollte also mit deinen 300-400/s nicht wirklich ein Problem geben
Gruß,
dvdjimmy
-
Don-Calzone
- Beiträge: 2
- Registriert: 12. April 2007 19:00
Also ich verweise mal hierhin
http://doc.trolltech.com/4.3-snapshot/t ... ss-threads
bei signalen und slos zwischen threads wird der slot nich vom signal sendenden thread aufgerufen sondern vom empfänger thread. Dies passiert nur wenn das eine queued connection ist, also eine mit ner warteschlange. somit gibts keinen zugriff auf auf die daten des empfänger thread vom sender thread aus. Das ist also threadsicher.
http://doc.trolltech.com/4.3-snapshot/t ... ss-threads
bei signalen und slos zwischen threads wird der slot nich vom signal sendenden thread aufgerufen sondern vom empfänger thread. Dies passiert nur wenn das eine queued connection ist, also eine mit ner warteschlange. somit gibts keinen zugriff auf auf die daten des empfänger thread vom sender thread aus. Das ist also threadsicher.